【发布时间】:2019-01-23 11:40:41
【问题描述】:
考虑以下代码片段
String strings[] = {"test"};
final List<String> collect = java.util.Arrays.stream(strings).collect(java.util.stream.Collectors.toList());
final Double[] array = java.util.Arrays.stream(strings).toArray(Double[]::new);
为什么 Java 可以在 collect-case 中保证正确的类型(将 collect 的泛型类型更改为例如 Double 会导致编译时错误),但不能在 array case 中保证正确的类型(编译正常,尽管 @987654323 的 apply(int) @ 给出一个Double[],而不是一个Object[],但是如果如上所述使用不正确,则会抛出ArrayStoreException)?
如果我更改流的类型而不更改toArray 调用中给定的IntFunction,那么生成编译时错误的最佳方法是什么?
【问题讨论】:
标签: java types java-8 java-stream