您有任何问题或意见都可以在评论区回复哦,欢迎大家一起来讨论,共同学习进步

Lambda初学者看起来十分复杂,但是实际上写法都是有套路的。包括之后的复杂的Lambda函数接口,其实都是这个套路,编程按着套路来就不怕了。
可以看下他们的套路。
我也录了两个视频,大家可以来看
https://www.bilibili.com/vide...
https://www.bilibili.com/vide...
比如Supplier,先来看看源码:
image.png
咱们写的时候,可以关注途中标注的几个位置
1.两个T,表示定义的出参类型,所以可以写Lambda表达式前面的部分

Supplier<String> supplier

2.源码中括号()部分,这部分表示lambda表达式需要接收的入参,实际这个Supplier不需要入参,所以可以写后边部分,这部分先Copy那个括号,写上箭头,最后再写Supplier提供的操作,Supplier需要返回一个String,直接把返回的String写在箭头右边就行

() -> "Hello Lambda";

写在一起就是

Supplier<String> supplier = () -> "Hello Supplier";

3.表达式写完了,怎么用呢?代码里不是写了get方法么?来试一试

System.out.println(supplier.get());

4.看看输出什么?
Hello Supplier

再比如Consumer,先来看看源码:
image.png
咱们写的时候,可以关注途中标注的几个位置
1.两个T,表示定义的入参类型,所以可以写Lambda表达式前面的部分

Consumer<String> consumer

2.源码中括号(T t)部分,这部分表示lambda表达式需要接收的入参,Consumer需要一个T类型的参数,所以可以写后边部分,这部分先Copy那个括号以及中间内容(T t),咱们改成具体的String,写上箭头,最后再写Consumer处理的操作,Consumer不返回内容,直接把操作(咱们就写个System.out.println)写在箭头右边就行

(String t)->System.out.println(t);

写在一起就是

Consumer<String> consumer = (String t)->System.out.println(t);

3.表达式写完了,怎么用呢?代码里不是写了accept方法么?方法里参数不是(T t)么,咱们改成String来试一试

consumer.accept("Hello Consumer!");

4.看看输出什么?
Hello Consumer
5.不是还有个andThen么?里面参数怎么还是个Consumer?那我再写一个别的Consumer试试?

Consumer<String> consumerAndThen = (String t)->System.out.println("And then "+t);

6.怎么用呢?这个不是Consumer的方法么?那不就是再原来的cosumer直接写个"点"就调用了?再刚才的第一个cosumer后边写个"点"试试,而且他返回的也是Cosumer,给他个cosumerNew试试

Consumer<String> consumerNew = consumer.andThen(consumerAndThen);

7.怎么调用,还是accept试试去,看看输出了啥?

consumerNew.accept("Hello Consumer!");
//输出,按照先后顺序,如果调整两个顺序,
//打印的顺序就不一致,andThen前面的先执行,后边的接下来执行
Hello Consumer!
And then Hello Consumer!

汤太咸
3 声望2 粉丝

程序员一枚,也爱读书,也爱理财,还喜欢把学到的读到的总结出来写点东西,写的不难,希望大家喜欢。