Пакет 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).
- С момента:
- 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, 2021, 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/17/docs/api/java.base/java/util/function/package-summary.html