Проблема, насколько я понимаю, заключается в том, что если вы не требуете, чтобы он был окончательным, вам необходимо гораздо более тщательно отслеживать его обработку и обновление всякий раз, когда изменяется внешняя переменная. Что если у вас есть многочисленные экземпляры внутреннего класса, и все они должны быть обновлены?

тоящее время я готовлю S (O) CJP с книгой Sierra & Bates.

Что касается внутренних классов (локальный или анонимный метод), они говорят, что мы не можем получить доступ к локальным переменным, потому что они живут в стеке, в то время как класс живет в куче и могут быть возвращены методом, а затем пытаются получить доступ к этим переменным которые находятся в стеке, но больше не существуют, так как метод закончился ...

Как мы все знаем, мы можем обойти это, используя ключевое слово final. Это то, что они говорят в книге, но они на самом деле не объясняют, каково действие этого ключевого слова final ... Насколько я знаю, использование последнего ключевого слова в локальной переменной метода не позволяет ему жить в куче. Так как же класс сможет получить доступ к конечной переменной, которая все еще живет в стеке, в то время как стек больше не может быть ???

Я предполагаю, что должна быть какая-то «копия» этой последней локальной переменной во внутреннем классе. Поскольку значение не может измениться, почему бы не дублировать эту информацию ... Кто-то может подтвердить это или сказать мне, если я что-то упустил?

Ответы на вопрос(2)

Ваш ответ на вопрос