扫码一下
查看教程更方便
函数式接口只有一个功能可以展示。 例如,具有单个方法“compareto”的 comparable 接口用于比较目的。 java 8 定义了许多函数式接口,可在 lambda 表达式中广泛使用。 以下是 java.util.function
包中定义的功能接口列表。
序号 | 接口 | 描述 |
---|---|---|
1 | biconsumer |
表示接受两个输入参数且不返回结果的操作。 |
2 | bifunction |
表示接受两个参数并产生结果的函数。 |
3 | binaryoperator |
表示对两个相同类型的操作数的操作,产生与操作数相同类型的结果。 |
4 | bipredicate |
表示两个参数的谓词(布尔值函数)。 |
5 | booleansupplier | 表示布尔值结果。 |
6 | consumer |
表示接受单个输入参数且不返回结果的操作。 |
7 | doublebinaryoperator | 表示对两个 double 值操作数的操作并产生一个双值结果。 |
8 | doubleconsumer | 表示接受单个 double 值参数且不返回结果的操作。 |
9 | doublefunction |
表示一个接受 double 值参数并产生结果的函数。 |
10 | doublepredicate | 表示一个 double 值参数的谓词(布尔值函数)。 |
11 | doublesupplier | 代表 double 结果的提供者。 |
12 | doubletointfunction | 表示一个接受 double 值参数并产生 int 值结果的函数。 |
13 | doubletolongfunction | 表示一个接受 double 值参数并产生长值结果的函数。 |
14 | doubleunaryoperator | 表示对产生 double 值结果的单个双值操作数的操作。 |
15 | function |
表示接受一个参数并产生结果的函数。 |
16 | intbinaryoperator | 表示对两个 int 值操作数的操作并产生一个 int 值结果。 |
17 | intconsumer | 表示接受单个 int 值参数且不返回结果的操作。 |
18 | intfunction |
表示一个接受 int 值参数并产生结果的函数。 |
19 | intpredicate | 表示一个 int 值参数的谓词(布尔值函数)。 |
20 | intsupplier | 代表整数值结果的提供者。 |
21 | inttodoublefunction | 表示一个接受 int 值参数并产生双值结果的函数。 |
22 | inttolongfunction | 表示一个接受 int 值参数并产生长值结果的函数。 |
23 | intunaryoperator | 表示对产生 int 值结果的单个 int 值操作数的操作。 |
24 | longbinaryoperator | 表示对两个 long 值操作数的操作并产生一个长值结果。 |
25 | longconsumer | 表示接受单个 long 值参数且不返回结果的操作。 |
26 | longfunction |
表示一个接受 long 值参数并产生结果的函数。 |
27 | longpredicate | 表示一个 long 值参数的谓词(布尔值函数)。 |
28 | longsupplier | 代表 long 值结果的供应商。 |
29 | longtodoublefunction | 表示一个接受 long 值参数并产生双值结果的函数。 |
30 | longtointfunction | 表示接受 long 值参数并产生 int 值结果的函数。 |
31 | longunaryoperator | 表示对产生 long 值结果的单个长值操作数的操作。 |
32 | objdoubleconsumer |
表示接受对象值和 double 值参数且不返回结果的操作。 |
33 | objintconsumer |
表示接受对象值和 int 值参数且不返回结果的操作。 |
34 | objlongconsumer |
表示接受对象值和 long 值参数且不返回结果的操作。 |
35 | predicate |
表示一个参数的谓词(布尔值函数)。 |
36 | supplier |
代表结果的提供者。 |
37 | todoublebifunction |
表示接受两个参数并产生 double 值结果的函数。 |
38 | todoublefunction |
表示产生 double 值结果的函数。 |
39 | tointbifunction |
表示一个接受两个参数并产生一个 int 值结果的函数。 |
40 | tointfunction |
表示产生 int 值结果的函数。 |
41 | tolongbifunction |
表示一个接受两个参数并产生一个 long 值结果的函数。 |
42 | tolongfunction |
表示产生 long 值结果的函数。 |
43 | unaryoperator |
表示对单个操作数的操作,该操作产生与其操作数相同类型的结果。 |
predicate
接口是一个函数接口,带有一个方法 test(object)
返回一个布尔值。 这个接口表示一个对象被测试为真或假。
下面是一个示例
import java.util.arrays;
import java.util.list;
import java.util.function.predicate;
public class java8tester {
public static void main(string args[]) {
list list = arrays.aslist(1, 2, 3, 4, 5, 6, 7, 8, 9);
// predicate predicate = n -> true
// n 作为参数传递给 predicate 接口的测试方法,无论 n 具有什么值,测试方法都将始终返回 true。
system.out.println("print all numbers:");
//将 n 作为参数传递
eval(list, n->true);
// predicate predicate1 = n -> n%2 == 0
// n 作为参数传递给 predicate 接口的测试方法,如果 n%2 为零,测试方法将返回 true
system.out.println("print even numbers:");
eval(list, n-> n%2 == 0 );
// predicate predicate2 = n -> n > 3
// n 作为参数传递给 predicate 接口的测试方法,如果 n 大于 3,测试方法将返回 true。
system.out.println("print numbers greater than 3:");
eval(list, n-> n > 3 );
}
public static void eval(list list, predicate predicate) {
for(integer n: list) {
if(predicate.test(n)) {
system.out.println(n " ");
}
}
}
}
上面代码运行结果如下