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

К каким объектам можно обращаться внутри лямбды?

Компании, где спрашивали
СБЕРСБЕР

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

sobes.tech AI

Внутри лямбда-выражения в Java можно обращаться к:

  • Локальным переменным, но только если они являются effectively final (то есть не изменяются после инициализации).
  • Полям и методам внешнего класса (в том числе нестатическим), так как лямбда захватывает ссылку на объект внешнего класса.
  • Параметрам метода, в котором объявлена лямбда, при условии, что они тоже effectively final.

Пример:

int number = 10; // effectively final
Runnable r = () -> {
    System.out.println(number); // можно использовать
    System.out.println(this.toString()); // доступ к методам и полям внешнего класса
};
r.run();

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