Стандартная библиотека содержит пакет
java.util.function, в котором хранятся
функциональные интерфейсы для большинства случаев жизни. Их можно разделить на 5 групп:
ФункцииОбычная обобщенная функция – интерфейс
Function<T, R>. Принимает параметр и возвращает значение другого типа. Для примитивов есть не-generic специализации – семейство интерфейсов
XtoYFunction. (Здесь и далее вместо X и Y подставляются названия примитивов).
Бинарные функции – функции с двумя параметрами и возвращаемым значением.
BiFunction<T, U, R>,
ToXBiFunction<T, U>.
Поставщики (Suppliers)Интерфейсы
Supplier<T>,
XSupplier – не принимают ничего, возвращают (поставляют) значение.
Потребители (Consumers)Consumer<T>,
XConsumer – принимают (потребляют) значение, ничего не возвращают.
Бинарный вариант,
BiConsumer<T, U> и
XYConsumer, потребляет два параметра.
ПредикатыPredicate<T>,
XPredicate – принимают параметр, возвращают boolean. Кроме самой функции содержат дефолтные реализации логических операций.
ОператорыУнарный (
UnaryOperator<T>) и бинарный (
BinaryOperator<T>) – просто функция и би-функция с одинаковым типом параметров и результата. Специализации для примитивов
XUnaryOperator и
XBinaryOperator вдобавок содержат дефолтные реализации методов для
композиции операторов.