Пакет java.util.function
// Assignment context
Predicate<String> p = String::isEmpty;
// Method invocation context
stream.filter(e -> e.getSize() > 10)...
// Cast context
stream.map((ToIntFunction) e -> e.getSize())...
Интерфейсы этого пакета — функциональные интерфейсы общего назначения, используемые JDK и доступные также для использования в пользовательском коде. Хотя они не охватывают полный набор форм функций, к которым можно адаптировать лямбда-выражения, их достаточно для распространённых задач. Другие функциональные интерфейсы, предназначенные для конкретных целей, например FileFilter, определены в пакетах, где они используются.
Интерфейсы этого пакета аннотированы с помощью FunctionalInterface. Эта аннотация не обязательна для того, чтобы компилятор распознал интерфейс как функциональный, а лишь помогает зафиксировать замысел разработчика и привлечь компилятор к выявлению случайных нарушений этого замысла.
Функциональные интерфейсы часто представляют такие абстрактные понятия, как функции, действия или предикаты. При документировании функциональных интерфейсов или упоминании переменных, типизированных функциональными интерфейсами, принято ссылаться непосредственно на эти абстрактные понятия, например использовать выражение «эта функция» вместо «функция, представленная этим объектом». Если говорится, что метод API принимает или возвращает функциональный интерфейс, например «применяет предоставленную функцию к...», подразумевается ненулевая ссылка на объект, реализующий соответствующий функциональный интерфейс, если только возможность значения null не оговорена явно.
Для функциональных интерфейсов этого пакета используется расширяемое соглашение об именовании, описанное ниже:
- Существует несколько основных форм функций, включая
Function(унарная функция изTвR),Consumer(унарная функция изTвvoid),Predicate(унарная функция изTвboolean) иSupplier(функция без аргументов, возвращающаяR). - У форм функций есть естественная арность, основанная на наиболее распространённых способах их использования. Основные формы можно изменить, добавив префикс арности, чтобы указать другую арность, например
BiFunction(бинарная функция изTиUвR). - Существуют дополнительные производные формы функций, расширяющие основные формы, включая
UnaryOperator(расширяетFunction) иBinaryOperator(расширяетBiFunction). - Типовые параметры функциональных интерфейсов можно специализировать для примитивных типов с помощью дополнительных префиксов типов. Чтобы специализировать возвращаемый тип для типа, у которого есть и обобщённый возвращаемый тип, и обобщённые аргументы, используется префикс
ToXxx, как вToIntFunction. В остальных случаях типовые аргументы специализируются слева направо, как вDoubleConsumerилиObjIntConsumer. (Префикс типаObjуказывает, что этот параметр не нужно специализировать и следует перейти к следующему параметру, как вObjIntConsumer.) Эти схемы можно комбинировать, как вIntToDoubleFunction. - Если для всех аргументов заданы префиксы специализации, префикс арности можно опустить (как в
ObjIntConsumer).
- Начиная с:
- 1.8
- См. также:
| Класс | Описание |
|---|---|
|
BiConsumer<T, |
Представляет операцию, принимающую два входных аргумента и не возвращающую результат. |
|
BiFunction<T, |
Представляет функцию, принимающую два аргумента и возвращающую результат. |
| BinaryOperator<T> | Представляет операцию над двумя операндами одного типа, возвращающую результат того же типа, что и операнды. |
|
BiPredicate<T, |
Представляет предикат (функцию, возвращающую логическое значение) с двумя аргументами. |
| BooleanSupplier | Представляет поставщик результатов типа boolean. |
| Consumer<T> | Представляет операцию, принимающую один входной аргумент и не возвращающую результат. |
| DoubleBinaryOperator | Представляет операцию над двумя операндами типа double, возвращающую результат типа double. |
| DoubleConsumer | Представляет операцию, принимающую один аргумент типа double и не возвращающую результат. |
| DoubleFunction<R> | Представляет функцию, принимающую аргумент типа double и возвращающую результат. |
| DoublePredicate | Представляет предикат (функцию, возвращающую логическое значение) с одним аргументом типа double. |
| DoubleSupplier | Представляет поставщик результатов типа double. |
| DoubleToIntFunction | Представляет функцию, принимающую аргумент типа double и возвращающую результат типа int. |
| DoubleToLongFunction | Представляет функцию, принимающую аргумент типа double и возвращающую результат типа long. |
| DoubleUnaryOperator | Представляет операцию над одним операндом типа double, возвращающую результат типа double. |
|
Function<T, |
Представляет функцию, принимающую один аргумент и возвращающую результат. |
| IntBinaryOperator | Представляет операцию над двумя операндами типа int, возвращающую результат типа int. |
| IntConsumer | Представляет операцию, принимающую один аргумент типа int и не возвращающую результат. |
| IntFunction<R> | Представляет функцию, принимающую аргумент типа int и возвращающую результат. |
| IntPredicate | Представляет предикат (функцию, возвращающую логическое значение) с одним аргументом типа int. |
| IntSupplier | Представляет поставщик результатов типа int. |
| IntToDoubleFunction | Представляет функцию, принимающую аргумент типа int и возвращающую результат типа double. |
| IntToLongFunction | Представляет функцию, принимающую аргумент типа int и возвращающую результат типа long. |
| IntUnaryOperator | Представляет операцию над одним операндом типа int, возвращающую результат типа int. |
| LongBinaryOperator | Представляет операцию над двумя операндами типа long, возвращающую результат типа long. |
| LongConsumer | Представляет операцию, принимающую один аргумент типа long и не возвращающую результат. |
| LongFunction<R> | Представляет функцию, принимающую аргумент типа long и возвращающую результат. |
| LongPredicate | Представляет предикат (функцию, возвращающую логическое значение) с одним аргументом типа long. |
| LongSupplier | Представляет поставщик результатов типа long. |
| LongToDoubleFunction | Представляет функцию, принимающую аргумент типа long и возвращающую результат типа double. |
| LongToIntFunction | Представляет функцию, принимающую аргумент типа long и возвращающую результат типа int. |
| LongUnaryOperator | Представляет операцию над одним операндом типа long, возвращающую результат типа long. |
| ObjDoubleConsumer<T> | Представляет операцию, принимающую аргумент типа объект и аргумент типа double, не возвращая результата. |
| ObjIntConsumer<T> | Представляет операцию, принимающую аргумент типа объект и аргумент типа int, не возвращая результата. |
| ObjLongConsumer<T> | Представляет операцию, принимающую аргумент типа объект и аргумент типа long, не возвращая результата. |
| Predicate<T> | Представляет предикат (функцию, возвращающую логическое значение) с одним аргументом. |
| Supplier<T> | Представляет поставщик результатов. |
|
ToDoubleBiFunction<T, |
Представляет функцию, принимающую два аргумента и возвращающую результат типа double. |
| ToDoubleFunction<T> | Представляет функцию, возвращающую результат типа double. |
|
ToIntBiFunction<T, |
Представляет функцию, принимающую два аргумента и возвращающую результат типа int. |
| ToIntFunction<T> | Представляет функцию, возвращающую результат типа int. |
|
ToLongBiFunction<T, |
Представляет функцию, принимающую два аргумента и возвращающую результат типа long. |
| ToLongFunction<T> | Представляет функцию, возвращающую результат типа long. |
| UnaryOperator<T> | Представляет операцию над одним операндом, возвращающую результат того же типа, что и операнд. |
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/function/package-summary.html