Khu*_*uzi 9 java java-8 java-stream
Stream st = Stream.of(1,2,3,4);
Run Code Online (Sandbox Code Playgroud)
这是创建整数流(通过在运行时推断)还是对象流?
st.collect(Collectors.averagingInt((Integer x)->x));
Run Code Online (Sandbox Code Playgroud)
这条线很好.
st.forEach((Integer x)-> System.out.println(x));
Run Code Online (Sandbox Code Playgroud)
这行不编译.它在(整数x)处给出一个编译错误,说出预期的对象但是找到了Integer.为什么?
为什么上面的averagingInt方法没有抱怨相同?
averagingInt将ToIntFunction接口作为原始引用类型,<? super T>并允许Integer值.虽然forEach正在使用与原始引用类型相同的Consumer接口,<? super T>但编译器正在抱怨Integer参数值.
签名不同。
Collectors.averagingInt接受 a ToIntFunction,其中操作的返回collect类型绑定到 的类型Stream,该类型是原始类型。
Stream.forEach接受 a Consumer,它直接绑定到 的类型Stream。
forEach由于类型安全性,原始类型会干扰您指定类型的能力,因此会导致编译错误。
| 归档时间: |
|
| 查看次数: |
232 次 |
| 最近记录: |