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();
    }
});