Пакет java.util.function
Функциональные интерфейсы предоставляют целевые типы для лямбда-выражений и ссылок на методы.
См.: Описание
| Интерфейс | Описание |
|---|---|
| BiConsumer<T,U> | Представляет операцию, принимающую два входных аргумента и не возвращающую результат. |
| BiFunction<T,U,R> | Представляет функцию, принимающую два аргумента и возвращающую результат. |
| BinaryOperator<T> | Представляет операцию над двумя операндами одного типа, возвращающую результат того же типа, что и операнды. |
| BiPredicate<T,U> | Представляет предикат (функцию, возвращающую boolean) от двух аргументов. |
| BooleanSupplier | Представляет поставщик результатов типа |
| Consumer<T> | Представляет операцию, принимающую один входной аргумент и не возвращающую результат. |
| DoubleBinaryOperator | Представляет операцию над двумя операндами типа |
| DoubleConsumer | Представляет операцию, принимающую один аргумент типа |
| DoubleFunction<R> | Представляет функцию, принимающую аргумент типа double и возвращающую результат. |
| DoublePredicate | Представляет предикат (функцию, возвращающую boolean) от одного аргумента типа |
| DoubleSupplier | Представляет поставщик результатов типа |
| DoubleToIntFunction | Представляет функцию, принимающую аргумент типа double и возвращающую результат типа int. |
| DoubleToLongFunction | Представляет функцию, принимающую аргумент типа double и возвращающую результат типа long. |
| DoubleUnaryOperator | Представляет операцию над одним операндом типа |
| Function<T,R> | Представляет функцию, принимающую один аргумент и возвращающую результат. |
| IntBinaryOperator | Представляет операцию над двумя операндами типа |
| IntConsumer | Представляет операцию, принимающую один аргумент типа |
| IntFunction<R> | Представляет функцию, принимающую аргумент типа int и возвращающую результат. |
| IntPredicate | Представляет предикат (функцию, возвращающую boolean) от одного аргумента типа |
| IntSupplier | Представляет поставщик результатов типа |
| IntToDoubleFunction | Представляет функцию, принимающую аргумент типа int и возвращающую результат типа double. |
| IntToLongFunction | Представляет функцию, принимающую аргумент типа int и возвращающую результат типа long. |
| IntUnaryOperator | Представляет операцию над одним операндом типа |
| LongBinaryOperator | Представляет операцию над двумя операндами типа |
| LongConsumer | Представляет операцию, принимающую один аргумент типа |
| LongFunction<R> | Представляет функцию, принимающую аргумент типа long и возвращающую результат. |
| LongPredicate | Представляет предикат (функцию, возвращающую boolean) от одного аргумента типа |
| LongSupplier | Представляет поставщик результатов типа |
| LongToDoubleFunction | Представляет функцию, принимающую аргумент типа long и возвращающую результат типа double. |
| LongToIntFunction | Представляет функцию, принимающую аргумент типа long и возвращающую результат типа int. |
| LongUnaryOperator | Представляет операцию над одним операндом типа |
| ObjDoubleConsumer<T> | Представляет операцию, принимающую аргумент типа object и аргумент типа |
| ObjIntConsumer<T> | Представляет операцию, принимающую аргумент типа object и аргумент типа |
| ObjLongConsumer<T> | Представляет операцию, принимающую аргумент типа object и аргумент типа |
| Predicate<T> | Представляет предикат (функцию, возвращающую boolean) от одного аргумента. |
| Supplier<T> | Представляет поставщик результатов. |
| ToDoubleBiFunction<T,U> | Представляет функцию, принимающую два аргумента и возвращающую результат типа double. |
| ToDoubleFunction<T> | Представляет функцию, возвращающую результат типа double. |
| ToIntBiFunction<T,U> | Представляет функцию, принимающую два аргумента и возвращающую результат типа int. |
| ToIntFunction<T> | Представляет функцию, возвращающую результат типа int. |
| ToLongBiFunction<T,U> | Представляет функцию, принимающую два аргумента и возвращающую результат типа long. |
| ToLongFunction<T> | Представляет функцию, возвращающую результат типа long. |
| UnaryOperator<T> | Представляет операцию над одним операндом, возвращающую результат того же типа, что и операнд. |
Описание пакета 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
- См. также:
FunctionalInterface
© 1993, 2020, 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.