Spec-Zone.ru › OpenJDK 24

Пакет java.util.function

package 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, как сказано, принимает или возвращает функциональный интерфейс таким образом, например, «применяет предоставленную функцию к…», это подразумевает непустой ссылку на объект, реализующий соответствующий функциональный интерфейс, если только потенциальная пустота не указана явно.

Функциональные интерфейсы в этом пакете следуют расширяемой конвенции именования, как показано ниже:

  • Существует несколько основных форм функций, включая 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:
  • FunctionalInterface
Пакет Описание
java.util
Содержит фреймворк коллекций, некоторые классы поддержки интернационализации, загрузчик сервисов, свойства, генерацию случайных чисел, классы для парсинга и сканирования строк, кодирование и декодирование base64, массив битов и несколько вспомогательных классов.
Класс Описание
BiConsumer<T,U>
Представляет операцию, принимающую два входных аргумента и не возвращающую результат.
BiFunction<T,U,R>
Представляет функцию, принимающую два аргумента и возвращающую результат.
BinaryOperator<T>
Представляет операцию над двумя операндами одного типа, производящую результат того же типа, что и операнды.
BiPredicate<T,U>
Представляет предикат (функцию с булевым значением) от двух аргументов.
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,R>
Представляет функцию, принимающую один аргумент и возвращающую результат.
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>
Представляет операцию, принимающую аргумент типа object и аргумент типа double, и не возвращающую результат.
ObjIntConsumer<T>
Представляет операцию, принимающую аргумент типа object и аргумент типа int, и не возвращающую результат.
ObjLongConsumer<T>
Представляет операцию, принимающую аргумент типа object и аргумент типа long, и не возвращающую результат.
Predicate<T>
Представляет предикат (функцию с булевым значением) от одного аргумента.
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>
Представляет операцию над одним операндом, возвращающую результат того же типа, что и операнд.

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/function/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API