为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕勒3428872 2022-07-27 11:17:44
AtomicInteger value1 = new AtomicInteger(0);IntStream.iterate(1, x -> 1).limit(100).parallel().forEach(y -> value1.incrementAndGet());在上面的代码中,forEach 接受一个返回值的 lambda 表达式。但是 forEach on stream 只接受不能从其接受方法返回任何值的消费者。为什么我没有收到编译错误?
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

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


因为方法返回的值在使用时会被忽略。


您也可以像IntConsumer现在的 accept 方法一样查看它:


new IntConsumer() {

    @Override

    public void accept(int y) {

        value1.incrementAndGet();

    }

});


查看完整回答
反对 回复 2022-07-27
  • 1 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信