JAVA Lambda简单套路

Lambda初学者看起来十分复杂,但是实际上写法都是有套路的。
可以看下他们的套路。
比如Supplier,先来看看源码:
JAVA Lambda简单套路
文章图片

咱们写的时候,可以关注途中标注的几个位置
1.两个T,表示定义的出参类型,所以可以写Lambda表达式前面的部分

Supplier supplier

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

【JAVA Lambda简单套路】写在一起就是
Supplier supplier = () -> "Hello Supplier";

3.表达式写完了,怎么用呢?代码里不是写了get方法么?来试一试
System.out.println(supplier.get());

4.看看输出什么?
Hello Supplier
再比如Consumer,先来看看源码:
JAVA Lambda简单套路
文章图片

咱们写的时候,可以关注途中标注的几个位置
1.两个T,表示定义的入参类型,所以可以写Lambda表达式前面的部分
Consumer consumer

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

写在一起就是
Consumer consumer = (String t)->System.out.println(t);

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

4.看看输出什么?
Hello Consumer
5.不是还有个andThen么?里面参数怎么还是个Consumer?那我再写一个别的Consumer试试?
Consumer consumerAndThen = (String t)->System.out.println("And then "+t);

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

7.怎么调用,还是accept试试去,看看输出了啥?
consumerNew.accept("Hello Consumer!"); //输出,按照先后顺序,如果调整两个顺序, //打印的顺序就不一致,andThen前面的先执行,后边的接下来执行 Hello Consumer! And then Hello Consumer!

    推荐阅读