我是 Java 8 的新手,有点乱。
现在我尝试了函数式接口(interface)的andThen
方法Consumer在 Java 8 中:
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
现在,我问自己是否可以在不为第一个消费者 cons1
创建自己的对象的情况下连接两个消费者(使用 andThen
方法)?
最佳答案
是的,但它会比直接的方法更困惑。
你可以写
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);
});
关于java - Java 8 中特殊 lambda 表达式的最短表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35139376/