Sobes.tech
Junior — Middle

Kan een lambda-uitdrukking toegang krijgen tot een variabele die binnen de methode waarin deze is gedefinieerd, is gedeclareerd?

sobes.tech AI

Antwoord van AI

Лямбда-выражение в Java может получить доступ к локальной переменной, объявленной в методе, только если эта переменная является эффективно финальной (effectively final). Это значит, что после инициализации значение переменной не изменяется.

Пример:

public void example() {
    int number = 10; // эффективно финальная переменная
    Runnable r = () -> System.out.println(number);
    r.run();
}

Если попытаться изменить number после определения лямбды, компилятор выдаст ошибку.

Это ограничение связано с тем, что лямбда может выполняться позже, и чтобы избежать проблем с изменяемым состоянием, Java требует, чтобы такие переменные были неизменяемыми.