您的位置:首页 > 编程语言 > Java开发

Java8的四大核心函数式接口

2017-08-07 08:34 603 查看


前言

在学习一段时间后会不会有这样的疑问—难道我要用Lambda表达式的时候总要自己写函数式接口吗? 

当然不是这样了,Java8里面提供了四大核心的函数式供我们使用!


四大核心函数式接口


测试代码

@Test
public void testCoreInter(){
/**
* @name 消费型接口
* @use Consumer<T>
* @param T 传入参数
* @fun 接受一个参数 无返回值
* */
Consumer<String> con=(str)->System.out.println(str);
con.accept("我是消费型接口!");

/**
* @name 供给型接口
* @use Supplier<R>
* @param R 返回值类型
* @fun 无参数 有返回值
* */
Supplier<Date> supp=()-> new Date();
Date date=supp.get();
System.out.println("当前时间:"+date);

/**
* @name 函数型接口
* @use Function<T,R>
* @param T 传入参数
* @return R 返回值类型
* @fun 接受一个参数 有返回值
* */
Function<String, String> fun=(str)->"hello,"+str;
String str=fun.apply("张俊强");
System.out.println(str);
/**
* @name 断定型接口
* @use Predicate<T>
* @param T 传入参数
* @return Boolean 返回一个Boolean型值
* @fun 接受一个参数 返回Boolean型值
* */
Predicate<Integer> pre=(num)->num>0;
Boolean flag=pre.test(10);
System.out.println(flag);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42


输出结果

我是消费型接口!
当前时间:Wed Jun 21 22:08:19 CST 2017
hello,张俊强
true
1
2
3
4
1
2
3
4


拓展函数式接口

如果你觉得这几个还是不够用,那么可以参考下面的一些拓展的接口,其用法与上面大同小异:
序号接口 & 描述
1BiConsumer<T,U>

代表了一个接受两个输入参数的操作,并且不返回任何结果
2BiFunction<T,U,R>

代表了一个接受两个输入参数的方法,并且返回一个结果
3BinaryOperator<T>

代表了一个作用于于两个同类型操作符的操作,并且返回了操作符同类型的结果
4BiPredicate<T,U>

代表了一个两个参数的boolean值方法
5BooleanSupplier

代表了boolean值结果的提供方
6Consumer<T>

代表了接受一个输入参数并且无返回的操作
7DoubleBinaryOperator

代表了作用于两个double值操作符的操作,并且返回了一个double值的结果。
8DoubleConsumer

代表一个接受double值参数的操作,并且不返回结果。
9DoubleFunction<R>

代表接受一个double值参数的方法,并且返回结果
10DoublePredicate

代表一个拥有double值参数的boolean值方法
11DoubleSupplier

代表一个double值结构的提供方
12DoubleToIntFunction

接受一个double类型输入,返回一个int类型结果。
13DoubleToLongFunction

接受一个double类型输入,返回一个long类型结果
14DoubleUnaryOperator

接受一个参数同为类型double,返回值类型也为double 。
15Function<T,R>

接受一个输入参数,返回一个结果。
16IntBinaryOperator

接受两个参数同为类型int,返回值类型也为int 。
17IntConsumer

接受一个int类型的输入参数,无返回值 。
18IntFunction<R>

接受一个int类型输入参数,返回一个结果 。
19IntPredicate

:接受一个int输入参数,返回一个布尔值的结果。
20IntSupplier

无参数,返回一个int类型结果。
21IntToDoubleFunction

接受一个int类型输入,返回一个double类型结果 。
22IntToLongFunction

接受一个int类型输入,返回一个long类型结果。
23IntUnaryOperator

接受一个参数同为类型int,返回值类型也为int 。
24LongBinaryOperator

接受两个参数同为类型long,返回值类型也为long。
25LongConsumer

接受一个long类型的输入参数,无返回值。
26LongFunction<R>

接受一个long类型输入参数,返回一个结果。
27LongPredicate

R接受一个long输入参数,返回一个布尔值类型结果。
28LongSupplier

无参数,返回一个结果long类型的值。
29LongToDoubleFunction

接受一个long类型输入,返回一个double类型结果。
30LongToIntFunction

接受一个long类型输入,返回一个int类型结果。
31LongUnaryOperator

接受一个参数同为类型long,返回值类型也为long。
32ObjDoubleConsumer<T>

接受一个object类型和一个double类型的输入参数,无返回值。
33ObjIntConsumer<T>

接受一个object类型和一个int类型的输入参数,无返回值。
34ObjLongConsumer<T>

接受一个object类型和一个long类型的输入参数,无返回值。
35Predicate<T>

接受一个输入参数,返回一个布尔值结果。
36Supplier<T>

无参数,返回一个结果。
37ToDoubleBiFunction<T,U>

接受两个输入参数,返回一个double类型结果
38ToDoubleFunction<T>

接受一个输入参数,返回一个double类型结果
39ToIntBiFunction<T,U>

接受两个输入参数,返回一个int类型结果。
40ToIntFunction<T>

接受一个输入参数,返回一个int类型结果。
41ToLongBiFunction<T,U>

接受两个输入参数,返回一个long类型结果。
42ToLongFunction<T>

接受一个输入参数,返回一个long类型结果。
43UnaryOperator<T>

接受一个参数为类型T,返回值类型也为T。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: