【发布时间】:2019-03-15 22:13:51
【问题描述】:
谁能给我解释一下,为什么编译器不会自动推断出这个表达式类型?
Stream.empty().collect(Collectors.summingInt(CharSequence::length))
我们知道CharSequence::length在这个上下文中是ToIntFunction<CharSequence>,所以从流元素中消费的类型是CharSequence,因此,被收集的流是Stream<CharSequence>类型。
在我的 IDE 上,我收到以下错误:
Stream类型中的collect(Collector super Object,A,R>)方法不适用于参数(Collector
)
从错误消息中可以看出,Stream.empty() 被自动推断为 Stream<Object>,这绝对不是我想要的!
【问题讨论】:
标签: java-8 java-stream type-inference collectors functional-interface