Лямбды и функциональные интерфейсы в Java
На сайте часто нужно применить одно и то же действие к разным данным: отфильтровать статьи по длине заголовка, отсортировать комментарии по дате, вывести список тегов в консоль. Каждый раз писать отдельный класс с одним методом утомительно, а менять алгоритм внутри уже готового метода - неудобно.
Java позволяет передать поведение как значение: описать правило одной короткой записью и передать его в метод списка или сервиса. За это отвечают функциональные интерфейсы (контракт с одним абстрактным методом) и лямбда-выражения, которые этот контракт реализуют без отдельного файла класса.
Тот же приём заменяет громоздкие анонимные классы там, где нужна только одна операция. В стандартной библиотеке уже есть готовые контракты для проверки условия, преобразования, потребления и создания значений.
Раздел пройдёт от определения функционального интерфейса
и синтаксиса лямбды к параметрам, возврату и блоку кода,
затем к передаче лямбды в метод и возврату из фабрики,
стандартным типам Predicate, Function,
Consumer, Supplier, UnaryOperator
и закреплению на практике.