Sobes.tech
Назад к вопросам
Senior
8

Что такое effectively final в Java и где он используется?

Компании, где спрашивали
Альфа-БанкАльфа-Банк

Ответ от нейросети

sobes.tech AI

В Java термин "effectively final" относится к локальным переменным, которые не объявлены с ключевым словом final, но после инициализации их значение не изменяется. То есть, переменная ведёт себя как final, хотя явно не помечена этим модификатором.

Это важно, например, при использовании лямбда-выражений и анонимных классов: они могут захватывать только те локальные переменные, которые являются final или effectively final. Если переменная изменяется после инициализации, компилятор выдаст ошибку.

Пример:

int x = 10; // effectively final, если не изменять
Runnable r = () -> System.out.println(x);
// Если позже написать x = 20;, будет ошибка компиляции

Таким образом, "effectively final" позволяет писать более лаконичный код без явного указания final, сохраняя при этом безопасность и предсказуемость поведения.