Lambda · Урок 8/10
80%
⏱ 10–15 min

Специализации функциональных интерфейсов

1. Бинарные специализации функциональных интерфейсов

Существуют бинарные специализации (binary specializations) интерфейсов Predicate, Consumer, Function и UnaryOperator, которые принимают на вход два элемента.

Интерфейс Функциональный дескриптор Описание
BiConsumer<T, U>
(T, U) -> void
Представляет операцию, которая принимает на вход два элемента и не возвращает результат.
BiFunction<T, U, R>
(T, U)  -> R
Представляет операцию, которая принимает на вход два элемента и возвращает результат.
BiPredicate<T, U>
(T, U) -> boolean
Представляет операцию, которая принимает на вход два элемента и возвращает значение boolean.
BinaryOperator<T>
(T, T) -> T
Представляет операцию, которая принимает на вход два элемента одного типа и возвращает значение того же типа.

2. Примитивные специализации функциональных интерфейсов

2.1. Predicate

Интерфейс Описание
IntPredicate
Принимает на вход значение типа int возвращает значение типа boolean.
LongPredicate
Принимает на вход значение типа long возвращает значение типа boolean.
DoublePredicate
Принимает на вход значение типа double возвращает значение типа boolean.

2.2. Consumer

Интерфейс Описание
IntConsumer

Принимает на вход значение типа int и ничего не возвращает.

LongConsumer

Принимает на вход значение типа long и ничего не возвращает.

DoubleConsumer
Принимает на вход значение типа double и ничего не возвращает.

2.3. Function

Принимающие примитивные специализации

Интерфейс Описание
IntFunction<R>

Принимает на вход значение типа int и возвращает значение типа R.

LongFunction<R>
Принимает на вход значение типа long и возвращает значение типа R.
DoubleFunction<R>
Принимает на вход значение типа double и возвращает значение R.

Производящие примитивные специализации

Интерфейс Описание
ToIntFunction<T>

Принимает на вход значение типа T и возвращает значение типа int.

ToDoubleFunction<T>

Принимает на вход значение типа T и возвращает значение типа double.

ToLongFunction<T>

Принимает на вход значение типа T и возвращает значение типа long.

Принимающие  и производящие примитивные специализации

Интерфейс Описание
IntToDoubleFunction
Принимает на вход значение типа int и возвращает значение типа double.
IntToLongFunction
Принимает на вход значение типа int и возвращает значение типа long.
LongToDoubleFunction
Принимает на вход значение типа long и возвращает значение типа double.
LongToIntFunction
Принимает на вход значение типа long и возвращает значение типа int.
DoubleToIntFunction
Принимает на вход значение типа double и возвращает значение типа int.
DoubleToLongFunction
Принимает на вход значение типа double и возвращает значение типа long.

2.4. Supplier

Интерфейс Описание
BooleanSupplier

Возвращает значение типа boolean.

IntSupplier
Возвращает значение типа int.
LongSupplier
Возвращает значение типа long.
DoubleSupplier
Возвращает значение типа double.

2.5. UnaryOperator

Интерфейс Описание
IntUnaryOperator
Принимает и возвращает значение типа int.
LongUnaryOperator
Принимает и возвращает значение типа long.
DoubleUnaryOperator
Принимает и возвращает значение типа  double.

2.6. BinaryOperator

Интерфейс Описание
IntBinaryOperator
Принимает на вход два значения типа int и возвращает значение типа int.
LongBinaryOperator
Принимает на вход два значения типа long и возвращает значение типа long.
DoubleBinaryOperator
Принимает на вход два значения типа double и возвращает значение типа double.

2.7. BiConsumer

Интерфейс Описание
ObjIntConsumer<T>
Принимает на вход два значения: типа int и Object.
ObjLongConsumer<T>
Принимает на вход два значения: типа long и Object.
ObjDoubleConsumer<T>
Принимает на вход два значения: типа double и Object.  

2.8. BiFunction

Интерфейс Описание
ToIntBiFunction<T, U>
Принимает на вход два объекта и возвращает значение типа int.
ToLongBiFunction<T, U>
Принимает на вход два объекта и возвращает значение типа long.
ToDoubleBiFunction<T, U>
Принимает на вход два объекта и возвращает значение типа double. 

Видео объяснение

Предпочитаете видеоформат? Посмотрите этот урок с примерами и объяснениями.

Java программирование

1. Введение в Java
2. Запуск Java
3. Синтаксис Java
4. Операторы Java
5. Условия и циклы
6. Массивы
7. Алгоритмы
8. ООП
9. static
10. Object
11. Интерфейсы, enum
12. Wrapper классы
13. String
14. Localization& Internationalization
15. Date & Time
16. Generics
17. Lambda
18. Коллекции
19. Stream API
20. Исключения
21. I/O
22. Reflection & JavaDoc
23. Сериализация
24. Maven
25. SQL
26. JDBC
27. Многопоточность
28. Git и GitHub
‹ Предыдущий урок Следующий урок ›