关于java:JAVA-Lambda简单套路

5次阅读

共计 1370 个字符,预计需要花费 4 分钟才能阅读完成。

Lambda 初学者看起来十分复杂,然而实际上写法都是有套路的。
能够看下他们的套路。
比方 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!
正文完
 0