Когда я использую лямбда-выражения или анонимных внутренних классов, с переменными из внешнего класса, я часто получаю ошибку во время компиляции:
Ламба выражений:Являются ли эффективные окончательные переменные интерпретируемыми как final компилятором в Java 8?
local variables referenced from a lambda expression must be final or effectively final
Внутренние классы:
local variables referenced from an inner class must be final or effectively final
Это означает, что компилятор в Java 8 может определить, является ли переменная неявно окончательной или нет.
Что касается вопроса this, использование конечных переменных вместо нефиналов иногда дает огромное потенциальное влияние на производительность.
Мой вопрос:
Компилятор в java 8 эффективно интерпретирует конечные переменные как конечные переменные, а позже, во время выполнения, использует его как final?
В результате, он делает ту же оптимализацию, что и для конечных переменных?
Вопросы о различиях между эффективными окончательными и окончательными (то есть this) связаны с тем, почему он должен быть окончательным, но не говорит ничего, что отвечает на мой вопрос.
Буду благодарен за любые ответы.