IntStream is = IntStream.of(1,2,3);
IntUnaryOperator un = IntUnaryOperator.identity();
is.forEach(s -> un.applyAsInt(s));
forEach方法只能以consumer为参数,那么它如何使用返回int的applyAsInt man方法编译成功?
谁能解释一下这背后的原因吗?
最佳答案
有问题的代码
is.forEach(s -> un.applyAsInt(s));
也可以表示为:
is.forEach(new IntConsumer() {
@Override
public void accept(int s) {
un.applyAsInt(s); // return type ignored
}
});
这可以帮助您理解,尽管 applyAsInt
返回 int
,在 forEach
中返回的值会被忽略。
关于lambda - 为什么 Collection 和 Stream 上的 forEach 方法即使不是 Consumer 类型也能成功获取 Function.Identity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54784630/