Функциональные интерфейсы имеют единую функциональность для демонстрации. Например, для сравнения используется сопоставимый интерфейс с единственным методом «CompareTo». В Java 8 определено множество функциональных интерфейсов, которые будут широко использоваться в лямбда-выражениях. Ниже приведен список функциональных интерфейсов, определенных в пакете java.util.Function.Ниже приведен список интерфейсов в Java8.
| 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