JAVA Lambda简单套路
Lambda初学者看起来十分复杂,但是实际上写法都是有套路的。
可以看下他们的套路。
比如Supplier,先来看看源码:
文章图片
咱们写的时候,可以关注途中标注的几个位置
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,先来看看源码:
文章图片
咱们写的时候,可以关注途中标注的几个位置
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!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- 科学养胃,别被忽悠,其实真的很简单
- 事件代理
- opencv|opencv C++模板匹配的简单实现
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 松软可口易消化,无需烤箱超简单,新手麻麻也能轻松成功~
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题