Назад к вопросам
СБЕР
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();
Если попытаться изменить локальную переменную после использования в лямбде, компилятор выдаст ошибку.