Что такое эффективная финализация (Effective Finality) в Java и как она связана с анонимными классами и лямбда-выражениями?
Ответ ⬇️
Эффективная финализация означает, что переменные, используемые внутри анонимных классов или лямбда-выражений, должны быть либо явно объявлены как final, либо эффективно финализированными — то есть не изменяться после своей инициализации. Это необходимо, чтобы гарантировать, что значение переменной не изменится, пока анонимный класс или лямбда-выражение её использует.
Пример использования ⚙️
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
int number = 10;
Consumer<Integer> consumer = value -> {
System.out.println(value + number); // Использование effectively final переменной
};
consumer.accept(5); // Вывод: 15
// number = 20; // Ошибка: переменная number должна быть эффективно финализированной
}
}
Java Learning 👩💻