Базы данных / SQL trainee
Какие переменные можно захватывать в лямбде?
Ответ
Только final или effectively final (не меняются после присваивания). Поля класса можно использовать без ограничений. Локальные переменные — только если они эффективно финальные, потому что захват идёт по значению (копия).
Разбор: Лямбда захватывает локальные переменные только если они final или effectively final, потому что захват идёт по значению (копия), а стек метода может быть уже разрушен. Поля экземпляра и статические поля доступны без ограничений через ссылку на объект/класс. Ловушка в том, что менять захваченную локальную переменную нельзя, и слово final писать не обязательно.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.