Sobes.tech
Назад к вопросам
Junior — Middle
65

Объясните, что означает использование ключевого слова '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 после использования в лямбде, компилятор выдаст ошибку. Это ограничение помогает избежать проблем с изменяемым состоянием в замыканиях.