forEach 方法正在接受一个 returns 值的 lambda 表达式。为什么我没有遇到以下代码的编译问题?
forEach method is accepting a lambda expression which returns a value. Why I am not getting compilation issue for the below code?
AtomicInteger value1 = new AtomicInteger(0);
IntStream.iterate(1, x -> 1).limit(100).parallel().forEach(y -> value1.incrementAndGet());
在上面的代码中,forEach 接受一个 lambda 表达式,它是 returning 一个值。但是 forEach on stream 只接受 Consumer ,它不能 return 来自其 accept 方法的任何值。为什么我没有收到编译错误?
Why I am not getting compilation error for this ?
因为方法返回的值被忽略而被消耗.
您也可以像 IntConsumer
的 accept 方法一样查看它现在看起来像:
new IntConsumer() {
@Override
public void accept(int y) {
value1.incrementAndGet();
}
});
AtomicInteger value1 = new AtomicInteger(0);
IntStream.iterate(1, x -> 1).limit(100).parallel().forEach(y -> value1.incrementAndGet());
在上面的代码中,forEach 接受一个 lambda 表达式,它是 returning 一个值。但是 forEach on stream 只接受 Consumer ,它不能 return 来自其 accept 方法的任何值。为什么我没有收到编译错误?
Why I am not getting compilation error for this ?
因为方法返回的值被忽略而被消耗.
您也可以像 IntConsumer
的 accept 方法一样查看它现在看起来像:
new IntConsumer() {
@Override
public void accept(int y) {
value1.incrementAndGet();
}
});