Пакет 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 на объект, реализующий соответствующий функциональный интерфейс, если явным образом не указана потенциальная возможность 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).
- Since:
- 1.8
- See Also:
| Класс | Описание |
|---|---|
|
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, 2023, 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/21/docs/api/java.base/java/util/function/package-summary.html