为什么'Stream.collect'是类型安全的,而'Stream.toArray(IntFunction<A[]>)“不是?
2022-09-02 22:20:30
请考虑以下代码片段
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可以保证集合大小写中的正确类型(将集合的泛型类型更改为例如Double会导致编译时错误),但在数组情况下却不能保证(编译良好,尽管给出了一个,而不是一个,但如果如上所述使用不正确,则会抛出)?apply(int)
Double[]::new
Double[]
Object[]
ArrayStoreException
如果我更改了流的类型而不更改调用中的给定类型,那么生成编译时错误的最佳方法是什么?IntFunction
toArray