Java 8 — функциональные интерфейсы

Поділитись

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

Sr.No.Интерфейс и описание
1BiConsumer <T, U>Представляет операцию, которая принимает два входных аргумента и не возвращает результата.
2BiFunction <Т, U, R>Представляет функцию, которая принимает два аргумента и выдает результат.
3BinaryOperator <Т>Представляет операцию над двумя операндами одного типа, производя результат того же типа, что и операнды.
4BiPredicate <T, U>Представляет предикат (булевозначная функция) двух аргументов.
5BooleanSupplierПредставляет поставщика булевозначных результатов.
6Потребитель <T>Представляет операцию, которая принимает один входной аргумент и не возвращает результата.
7DoubleBinaryOperatorПредставляет операцию над двумя двухзначными операндами, которая приводит к получению двойного результата.
8DoubleConsumerПредставляет операцию, которая принимает один аргумент с двойным значением и не возвращает результата.
9DoubleFunction <R>Представляет функцию, которая принимает аргумент с двойным значением и выдает результат.
10DoublePredicateПредставляет предикат (булевозначная функция) одного аргумента с двойным значением.
11DoubleSupplierПредставляет поставщика двойных результатов.
12DoubleToIntFunctionПредставляет функцию, которая принимает аргумент с двумя значениями и выдает результат со значениями типа int.
13DoubleToLongFunctionПредставляет функцию, которая принимает аргумент с двумя значениями и выдает результат с длинными значениями.
14DoubleUnaryOperatorПредставляет операцию с одним двойным операндом, который приводит к двойному результату.
15Функция <T, R>Представляет функцию, которая принимает один аргумент и выдает результат.
16IntBinaryOperatorПредставляет операцию над двумя int-значными операндами и выдает int-значный результат.
17IntConsumerПредставляет операцию, которая принимает один аргумент с внутренним значением и не возвращает результата.
18IntFunction <R>Представляет функцию, которая принимает аргумент с внутренним значением и выдает результат.
19IntPredicateПредставляет предикат (булевозначную функцию) одного аргумента с внутренним значением.
20IntSupplierПредставляет поставщика ценных результатов.
21IntToDoubleFunctionПредставляет функцию, которая принимает аргумент с внутренним значением и выдает результат с двойным значением.
22IntToLongFunctionПредставляет функцию, которая принимает аргумент с внутренним значением и выдает долгосрочное значение.
23IntUnaryOperatorПредставляет операцию с одним int-значным операндом, который создает int-значный результат.
24LongBinaryOperatorПредставляет операцию над двумя долгосрочными операндами и дает долгосрочное значение.
25LongConsumerПредставляет операцию, которая принимает один длинный аргумент и не возвращает результата.
26LongFunction <R>Представляет функцию, которая принимает длиннозначный аргумент и выдает результат.
27LongPredicateПредставляет предикат (булевозначная функция) одного длиннозначного аргумента.
28LongSupplierПредставляет поставщика долгосрочных результатов.
29LongToDoubleFunctionПредставляет функцию, которая принимает длиннозначный аргумент и выдает двузначный результат.
30LongToIntFunctionПредставляет функцию, которая принимает длиннозначный аргумент и выдает int-значный результат.
31LongUnaryOperatorПредставляет операцию с одним длиннозначным операндом, который приводит к длиннозначному результату.
32ObjDoubleConsumer <Т>Представляет операцию, которая принимает объектнозначный и двухзначный аргумент и не возвращает результата.
33ObjIntConsumer <Т>Представляет операцию, которая принимает объектно-значимый и int-значимый аргументы и не возвращает результата.
34ObjLongConsumer <Т>Представляет операцию, которая принимает объектный и длинный аргумент и не возвращает результата.
35Предиката <Т>Представляет предикат (булевозначная функция) одного аргумента.
36Поставщик <TПредставляет поставщика результатов.
37ToDoubleBiFunction <T, U>Представляет функцию, которая принимает два аргумента и выдает двузначный результат.
38ToDoubleFunction <Т>Представляет функцию, которая выдает двузначный результат.
39ToIntBiFunction <T, U>Представляет функцию, которая принимает два аргумента и выдает целочисленный результат.
40ToIntFunction <Т>Представляет функцию, которая выдает int-значный результат.
41ToLongBiFunction <T, U>Представляет функцию, которая принимает два аргумента и выдает долгосрочное значение.
42ToLongFunction <Т>Представляет функцию, которая выдает долгосрочное значение.
43UnaryOperator <Т>Представляет операцию с одним операндом, которая выдает результат того же типа, что и его операнд.

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

Поділитись