Functional Interfaces

优质
小牛编辑
130浏览
2023-12-01

功能界面具有单一功能。 例如,具有单个方法'compareTo'的Comparable接口用于比较目的。 Java 8定义了许多在lambda表达式中广泛使用的函数接口。 以下是java.util.Function包中定义的功能接口列表。

Sr.No.界面和描述
1

BiConsumer《T,U》

表示接受两个输入参数的操作,并且不返回任何结果。

2

BiFunction《T,U,R》

表示接受两个参数并生成结果的函数。

3

BinaryOperator《T》

表示对两个相同类型的操作数的操作,产生与操作数相同类型的结果。

4

BiPredicate《T,U》

表示两个参数的谓词(布尔值函数)。

5

BooleanSupplier

表示布尔值结果的供应商。

6

Consumer《T》

表示接受单个输入参数且不返回结果的操作。

7

DoubleBinaryOperator

表示对两个双值操作数的运算并产生双值结果。

8

DoubleConsumer

表示接受单个双值参数且不返回结果的操作。

9

DoubleFunction《R》

表示接受双值参数并生成结果的函数。

10

DoublePredicate

表示一个双值参数的谓词(布尔值函数)。

11

DoubleSupplier

代表双值结果的供应商。

12

DoubleToIntFunction

表示接受双值参数并生成int值结果的函数。

13

DoubleToLongFunction

表示接受双值参数并生成长值结果的函数。

14

DoubleUnaryOperator

表示对生成双值结果的单个双值操作数的操作。

15

Function《T,R》

表示接受一个参数并生成结果的函数。

16

IntBinaryOperator

表示对两个int-值操作数的操作,并生成一个int值结果。

17

IntConsumer

表示接受单个int值参数并且不返回任何结果的操作。

18

IntFunction《R》

表示接受int值参数并生成结果的函数。

19

IntPredicate

表示一个int值参数的谓词(布尔值函数)。

20

IntSupplier

表示int值结果的供应商。

21

IntToDoubleFunction

表示接受int值参数并生成双值结果的函数。

22

IntToLongFunction

表示接受int值参数并生成长值结果的函数。

23

IntUnaryOperator

表示对生成int值结果的单个int值操作数的操作。

24

LongBinaryOperator

表示对两个长值操作数的操作,并产生一个长值结果。

25

LongConsumer

表示接受单个长值参数并且不返回任何结果的操作。

26

LongFunction《R》

表示接受长值参数并生成结果的函数。

27

LongPredicate

表示一个长值参数的谓词(布尔值函数)。

28

LongSupplier

代表长期价值结果的供应商。

29

LongToDoubleFunction

表示接受长值参数并生成双值结果的函数。

30

LongToIntFunction

表示接受长值参数并生成int值结果的函数。

31

LongUnaryOperator

表示对生成长值结果的单个长值操作数的操作。

32

ObjDoubleConsumer《T》

表示接受对象值和双值参数的操作,并且不返回任何结果。

33

ObjIntConsumer《T》

表示接受对象值和int值参数的操作,并且不返回任何结果。

34

ObjLongConsumer《T》

表示接受对象值和长值参数的操作,并且不返回任何结果。

35

Predicate《T》

表示一个参数的谓词(布尔值函数)。

36

Supplier《T》

代表结果的供应商。

37

ToDoubleBiFunction《T,U》

表示接受两个参数并生成双值结果的函数。

38

ToDoubleFunction《T》

表示生成双值结果的函数。

39

ToIntBiFunction《T,U》

表示接受两个参数并生成int值结果的函数。

40

ToIntFunction《T》

表示生成int值结果的函数。

41

ToLongBiFunction《T,U》

表示接受两个参数并生成长值结果的函数。

42

ToLongFunction《T》

表示生成长值结果的函数。

43

UnaryOperator《T》

表示对单个操作数的操作,该操作生成与其操作数相同类型的结果。

功能接口示例

Predicate 接口是一个带有方法测试(Object)的函数接口,用于返回布尔值。 此接口表示对象被测试为true或false。

使用您选择的任何编辑器创建以下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。

验证结果 (Verify the Result)

使用javac编译器编译类如下 -

C:\JAVA>javac Java8Tester.java

现在运行Java8Tester如下 -

C:\JAVA>java Java8Tester

它应该产生以下输出 -

Print all numbers:
1
2
3
4
5
6
7
8
9
Print even numbers:
2
4
6
8
Print numbers greater than 3:
4
5
6
7
8
9