为什么 Collection 和 Stream 上的 forEach 方法即使不是 Consumer 类型也能成功获取 Function.Identity?
why does forEach method on Collection and Stream take Function.Identity successfully even if it is not Consumer type?
IntStream is = IntStream.of(1,2,3);
IntUnaryOperator un = IntUnaryOperator.identity();
is.forEach(s -> un.applyAsInt(s));
forEach方法只能以consumer为参数,那么如何用applyAsInt man方法编译成功which returns int?
谁能解释一下这背后的原因?
因为"s -> un.applyAsInt(s)"是消费者
有问题的代码
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
.[=15= 中被忽略]
IntStream is = IntStream.of(1,2,3);
IntUnaryOperator un = IntUnaryOperator.identity();
is.forEach(s -> un.applyAsInt(s));
forEach方法只能以consumer为参数,那么如何用applyAsInt man方法编译成功which returns int?
谁能解释一下这背后的原因?
因为"s -> un.applyAsInt(s)"是消费者
有问题的代码
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
.[=15= 中被忽略]