您有任何问题或意见都可以在评论区回复哦,欢迎大家一起来讨论,共同学习进步
Lambda初学者看起来十分复杂,但是实际上写法都是有套路的。包括之后的复杂的Lambda函数接口,其实都是这个套路,编程按着套路来就不怕了。
可以看下他们的套路。
我也录了两个视频,大家可以来看
https://www.bilibili.com/vide...
https://www.bilibili.com/vide...
比如Supplier,先来看看源码:
咱们写的时候,可以关注途中标注的几个位置
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,先来看看源码:
咱们写的时候,可以关注途中标注的几个位置
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!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。