Junior — Middle
Може ли лямбда изразът да получи достъп до променлива, обявена вътре в метода, в който е дефиниран?
sobes.tech AI
Отговор от AI
Изразът lambda в Java може да получи достъп до локална променлива, обявена в метода, само ако тази променлива е ефективно финална. Това означава, че след инициализацията стойността на променливата не се променя.
Пример:
public void primer() {
int chislo = 10; // ефективно финална променлива
Runnable r = () -> System.out.println(chislo);
r.run();
}
Ако се опитате да промените chislo след дефинирането на лямбдата, компилаторът ще даде грешка.
Това ограничение е свързано с факта, че лямбдата може да се изпълни по-късно, и за да се избегнат проблеми с променливото състояние, Java изисква тези променливи да са неизменяеми.