В Java локальные внутренние классы могут обращаться только к локальным переменным, объявленным как final или фактически final. Это значит, что ты не можешь напрямую обращаться к нефинальным локальным переменным изнутри локального внутреннего класса.
Это архитектурное решение языка обусловлено следующим:
Чтобы обращаться к нефинальной локальной переменной внутри локального внутреннего класса, нужно либо:
final, либоpublic void outerMethod() {
final int count = 10; // Объявляем как final
class LocalInner {
void display() {
System.out.println(count); // Можешь обращаться к final переменной
}
}
LocalInner inner = new LocalInner();
inner.display();
}
finalfinal или фактически final локальные переменныеЭтот механизм обеспечивает потокобезопасность и консистентность данных, когда локальные внутренние классы взаимодействуют с переменными внешнего метода.
Локальный внутренний класс может получить доступ к нефинальной локальной переменной из охватывающего метода, если переменная никогда не переопределяется после инициализации.
Новый — ещё не проверен сообществом
Вы