Назад к вопросам
Junior — Middle
66
Объясните, что означает использование ключевого слова 'effectively final' для переменной в Java?
Ответ от нейросети
sobes.tech AI
В Java переменная считается "effectively final" (эффективно финальной), если после её инициализации значение этой переменной не изменяется, хотя она и не объявлена с ключевым словом final.
Это важно, например, при использовании локальных переменных внутри лямбда-выражений или анонимных классов — такие переменные должны быть либо явно final, либо "effectively final".
Пример:
int x = 10; // переменная не объявлена final
Runnable r = () -> System.out.println(x); // x используется в лямбде
// если после этого x не изменяется, то она считается effectively final
Если попытаться изменить x после использования в лямбде, компилятор выдаст ошибку. Это ограничение помогает избежать проблем с изменяемым состоянием в замыканиях.