forEach方法接受一个返回值的lambda表达式。为什么我没有得到以下代码的编译问题?

问题描述 投票:2回答:1
AtomicInteger value1 = new AtomicInteger(0);
IntStream.iterate(1, x -> 1).limit(100).parallel().forEach(y -> value1.incrementAndGet());

在上面的代码中,forEach接受一个返回值的lambda表达式。但是forEach on stream只接受不能从其accept方法返回任何值的Consumer。为什么我没有收到编译错误?

java lambda java-8 functional-interface
1个回答
2
投票

为什么我没有收到编译错误?

因为方法返回的值在消耗时被忽略。

你也可以看一下它像IntConsumer的accept方法现在看起来像:

new IntConsumer() {
    @Override
    public void accept(int y) {
        value1.incrementAndGet();
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.