Ответ
Лямбда-выражения в Java позволяют кратко реализовывать функциональные интерфейсы (интерфейсы с одним абстрактным методом). Они заменяют анонимные классы, делая код чище.
Синтаксис:
(параметры) -> { тело }
Пример без лямбды:
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("Hello");
}
};
С лямбдой:
Runnable r = () -> System.out.println("Hello");
Ключевые особенности:
- Типы параметров можно опускать (выводятся из контекста)
- Если параметр один, скобки можно опустить
- Если тело однострочное, фигурные скобки и return можно опустить
- Лямбды могут захватывать final или effectively final переменные из внешней области видимости