Функциональные интерфейсы имеют единую функциональность для демонстрации. Например, для сравнения используется сопоставимый интерфейс с единственным методом «CompareTo». В Java 8 определено множество функциональных интерфейсов, которые будут широко использоваться в лямбда-выражениях. Ниже приведен список функциональных интерфейсов, определенных в пакете java.util.Function.
Sr.No. | Интерфейс и описание |
---|---|
1 |
BiConsumer <T, U> Представляет операцию, которая принимает два входных аргумента и не возвращает результата. |
2 |
BiFunction <Т, U, R> Представляет функцию, которая принимает два аргумента и выдает результат. |
3 |
BinaryOperator <Т> Представляет операцию над двумя операндами одного типа, производя результат того же типа, что и операнды. |
4 |
BiPredicate <T, U> Представляет предикат (булевозначная функция) двух аргументов. |
5 |
BooleanSupplier Представляет поставщика булевозначных результатов. |
6 |
Потребитель <T> Представляет операцию, которая принимает один входной аргумент и не возвращает результата. |
7 |
DoubleBinaryOperator Представляет операцию над двумя двухзначными операндами, которая приводит к получению двойного результата. |
8 |
DoubleConsumer Представляет операцию, которая принимает один аргумент с двойным значением и не возвращает результата. |
9 |
DoubleFunction <R> Представляет функцию, которая принимает аргумент с двойным значением и выдает результат. |
10 |
DoublePredicate Представляет предикат (булевозначная функция) одного аргумента с двойным значением. |
11 |
DoubleSupplier Представляет поставщика двойных результатов. |
12 |
DoubleToIntFunction Представляет функцию, которая принимает аргумент с двумя значениями и выдает результат со значениями типа int. |
13 |
DoubleToLongFunction Представляет функцию, которая принимает аргумент с двумя значениями и выдает результат с длинными значениями. |
14 |
DoubleUnaryOperator Представляет операцию с одним двойным операндом, который приводит к двойному результату. |
15 |
Функция <T, R> Представляет функцию, которая принимает один аргумент и выдает результат. |
16 |
IntBinaryOperator Представляет операцию над двумя int-значными операндами и выдает int-значный результат. |
17 |
IntConsumer Представляет операцию, которая принимает один аргумент с внутренним значением и не возвращает результата. |
18 |
IntFunction <R> Представляет функцию, которая принимает аргумент с внутренним значением и выдает результат. |
19 |
IntPredicate Представляет предикат (булевозначную функцию) одного аргумента с внутренним значением. |
20 |
IntSupplier Представляет поставщика ценных результатов. |
21 |
IntToDoubleFunction Представляет функцию, которая принимает аргумент с внутренним значением и выдает результат с двойным значением. |
22 |
IntToLongFunction Представляет функцию, которая принимает аргумент с внутренним значением и выдает долгосрочное значение. |
23 |
IntUnaryOperator Представляет операцию с одним int-значным операндом, который создает int-значный результат. |
24 |
LongBinaryOperator Представляет операцию над двумя долгосрочными операндами и дает долгосрочное значение. |
25 |
LongConsumer Представляет операцию, которая принимает один длинный аргумент и не возвращает результата. |
26 |
LongFunction <R> Представляет функцию, которая принимает длиннозначный аргумент и выдает результат. |
27 |
LongPredicate Представляет предикат (булевозначная функция) одного длиннозначного аргумента. |
28 |
LongSupplier Представляет поставщика долгосрочных результатов. |
29 |
LongToDoubleFunction Представляет функцию, которая принимает длиннозначный аргумент и выдает двузначный результат. |
30 |
LongToIntFunction Представляет функцию, которая принимает длиннозначный аргумент и выдает int-значный результат. |
31 |
LongUnaryOperator Представляет операцию с одним длиннозначным операндом, который приводит к длиннозначному результату. |
32 |
ObjDoubleConsumer <Т> Представляет операцию, которая принимает объектнозначный и двухзначный аргумент и не возвращает результата. |
33 |
ObjIntConsumer <Т> Представляет операцию, которая принимает объектно-значимый и int-значимый аргументы и не возвращает результата. |
34 |
ObjLongConsumer <Т> Представляет операцию, которая принимает объектный и длинный аргумент и не возвращает результата. |
35 |
Предиката <Т> Представляет предикат (булевозначная функция) одного аргумента. |
36 |
Поставщик <T> Представляет поставщика результатов. |
37 |
ToDoubleBiFunction <T, U> Представляет функцию, которая принимает два аргумента и выдает двузначный результат. |
38 |
ToDoubleFunction <Т> Представляет функцию, которая выдает двузначный результат. |
39 |
ToIntBiFunction <T, U> Представляет функцию, которая принимает два аргумента и выдает целочисленный результат. |
40 |
ToIntFunction <Т> Представляет функцию, которая выдает int-значный результат. |
41 |
ToLongBiFunction <T, U> Представляет функцию, которая принимает два аргумента и выдает долгосрочное значение. |
42 |
ToLongFunction <Т> Представляет функцию, которая выдает долгосрочное значение. |
43 |
UnaryOperator <Т> Представляет операцию с одним операндом, которая выдает результат того же типа, что и его операнд. |
BiConsumer <T, U>
Представляет операцию, которая принимает два входных аргумента и не возвращает результата.
BiFunction <Т, U, R>
Представляет функцию, которая принимает два аргумента и выдает результат.
BinaryOperator <Т>
Представляет операцию над двумя операндами одного типа, производя результат того же типа, что и операнды.
BiPredicate <T, U>
Представляет предикат (булевозначная функция) двух аргументов.
BooleanSupplier
Представляет поставщика булевозначных результатов.
Потребитель <T>
Представляет операцию, которая принимает один входной аргумент и не возвращает результата.
DoubleBinaryOperator
Представляет операцию над двумя двухзначными операндами, которая приводит к получению двойного результата.
DoubleConsumer
Представляет операцию, которая принимает один аргумент с двойным значением и не возвращает результата.
DoubleFunction <R>
Представляет функцию, которая принимает аргумент с двойным значением и выдает результат.
DoublePredicate
Представляет предикат (булевозначная функция) одного аргумента с двойным значением.
DoubleSupplier
Представляет поставщика двойных результатов.
DoubleToIntFunction
Представляет функцию, которая принимает аргумент с двумя значениями и выдает результат со значениями типа int.
DoubleToLongFunction
Представляет функцию, которая принимает аргумент с двумя значениями и выдает результат с длинными значениями.
DoubleUnaryOperator
Представляет операцию с одним двойным операндом, который приводит к двойному результату.
Функция <T, R>
Представляет функцию, которая принимает один аргумент и выдает результат.
IntBinaryOperator
Представляет операцию над двумя int-значными операндами и выдает int-значный результат.
IntConsumer
Представляет операцию, которая принимает один аргумент с внутренним значением и не возвращает результата.
IntFunction <R>
Представляет функцию, которая принимает аргумент с внутренним значением и выдает результат.
IntPredicate
Представляет предикат (булевозначную функцию) одного аргумента с внутренним значением.
IntSupplier
Представляет поставщика ценных результатов.
IntToDoubleFunction
Представляет функцию, которая принимает аргумент с внутренним значением и выдает результат с двойным значением.
IntToLongFunction
Представляет функцию, которая принимает аргумент с внутренним значением и выдает долгосрочное значение.
IntUnaryOperator
Представляет операцию с одним int-значным операндом, который создает int-значный результат.
LongBinaryOperator
Представляет операцию над двумя долгосрочными операндами и дает долгосрочное значение.
LongConsumer
Представляет операцию, которая принимает один длинный аргумент и не возвращает результата.
LongFunction <R>
Представляет функцию, которая принимает длиннозначный аргумент и выдает результат.
LongPredicate
Представляет предикат (булевозначная функция) одного длиннозначного аргумента.
LongSupplier
Представляет поставщика долгосрочных результатов.
LongToDoubleFunction
Представляет функцию, которая принимает длиннозначный аргумент и выдает двузначный результат.
LongToIntFunction
Представляет функцию, которая принимает длиннозначный аргумент и выдает int-значный результат.
LongUnaryOperator
Представляет операцию с одним длиннозначным операндом, который приводит к длиннозначному результату.
ObjDoubleConsumer <Т>
Представляет операцию, которая принимает объектнозначный и двухзначный аргумент и не возвращает результата.
ObjIntConsumer <Т>
Представляет операцию, которая принимает объектно-значимый и int-значимый аргументы и не возвращает результата.
ObjLongConsumer <Т>
Представляет операцию, которая принимает объектный и длинный аргумент и не возвращает результата.
Предиката <Т>
Представляет предикат (булевозначная функция) одного аргумента.
Поставщик <T>
Представляет поставщика результатов.
ToDoubleBiFunction <T, U>
Представляет функцию, которая принимает два аргумента и выдает двузначный результат.
ToDoubleFunction <Т>
Представляет функцию, которая выдает двузначный результат.
ToIntBiFunction <T, U>
Представляет функцию, которая принимает два аргумента и выдает целочисленный результат.
ToIntFunction <Т>
Представляет функцию, которая выдает int-значный результат.
ToLongBiFunction <T, U>
Представляет функцию, которая принимает два аргумента и выдает долгосрочное значение.
ToLongFunction <Т>
Представляет функцию, которая выдает долгосрочное значение.
UnaryOperator <Т>
Представляет операцию с одним операндом, которая выдает результат того же типа, что и его операнд.
Пример функционального интерфейса
Интерфейс Predicate <T> — это функциональный интерфейс с методом test (Object) для возврата логического значения. Этот интерфейс означает, что объект проверен на истинность или ложь.
Создайте следующую Java-программу, используя любой редактор по вашему выбору, например, в C: \> JAVA.
Java8Tester.java
import java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class Java8Tester { public static void main(String args[]) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); // Predicate<Integer> predicate = n -> true // n is passed as parameter to test method of Predicate interface // test method will always return true no matter what value n has. System.out.println("Print all numbers:"); //pass n as parameter eval(list, n->true); // Predicate<Integer> predicate1 = n -> n%2 == 0 // n is passed as parameter to test method of Predicate interface // test method will return true if n%2 comes to be zero System.out.println("Print even numbers:"); eval(list, n-> n%2 == 0 ); // Predicate<Integer> predicate2 = n -> n > 3 // n is passed as parameter to test method of Predicate interface // test method will return true if n is greater than 3. System.out.println("Print numbers greater than 3:"); eval(list, n-> n > 3 ); } public static void eval(List<Integer> list, Predicate<Integer> predicate) { for(Integer n: list) { if(predicate.test(n)) { System.out.println(n + " "); } } } }
Здесь мы передали интерфейс Predicate, который принимает один вход и возвращает Boolean.
Проверьте результат
Скомпилируйте класс с помощью компилятора javac следующим образом:
C:\JAVA>javac Java8Tester.java
Теперь запустите Java8Tester следующим образом —
C:\JAVA>java Java8Tester
Он должен произвести следующий вывод —