运维开发网

Java 8中特殊lambda表达式的最短表示法

运维开发网 https://www.qedev.com 2020-04-08 15:09 出处:网络 作者:运维开发网整理
我是 Java 8的新手,并且正在搞乱一点. 现在我已经尝试了Java 8中功能接口Consumer的andThen方法: public static void main(String[] args) { List<Integer> ints = new ArrayList<Integer>(); for (int i = 0; i < 5; i++) { ints
我是 Java 8的新手,并且正在搞乱一点.

现在我已经尝试了Java 8中功能接口Consumer的andThen方法:

public static void main(String[] args) {
    List<Integer> ints = new ArrayList<Integer>();
    for (int i = 0; i < 5; i++) {
        ints.add(i);
    }
    Consumer<Integer> cons1 = in -> System.out.println("--> " + in);
    ints.forEach(cons1.andThen(in -> System.out.println("-+---> " + in)));
}

它工作正常!输出是:

--> 0
-+---> 0
--> 1
-+---> 1
--> 2
-+---> 2
--> 3
-+---> 3
--> 4
-+---> 4

现在,我问自己是否可以连接两个消费者(使用andThen方法)而不为第一个消费者cons1创建自己的对象?

是的,但它会比直截了当的做法更加混乱.

你可以写

ints.forEach(
   ((Consumer<Integer>) in -> System.out.println("--> " + in))
       .andThen(in -> System.out.println("-+---> " + in)));

但是写起来要好得多

ints.forEach(in -> {
  System.out.println("--> " + in);
  System.out.println("-+---> " + in);
});
0

精彩评论

暂无评论...
验证码 换一张
取 消