为什么新的 Java 8 流在 toArray 调用上返回对象数组?
当我在一个涉及Java 8新流的项目上工作时,我注意到当我调用一个流时,它会返回一个而不是.尽管我很惊讶,但我开始深入研究Java 8的源代码,找不到任何理由为什么他们没有实现为.这背后是否有任何原因,或者它只是一种(不)一致性?Stream#toArray()
Object[]
T[]
Object[] toArray();
T[] toArray();
编辑1:我注意到在答案中很多人说这是不可能的,但是这个代码片段编译并返回预期的结果?
import java.util.Arrays;
public class Test<R> {
private Object[] items;
public Test(R[] items) {
this.items = items;
}
public R[] toArray() {
return (R[]) items;
}
public static void main(String[] args) {
Test<Integer> integerTest = new Test<>(new Integer[]{
1, 2, 3, 4
});
System.out.println(Arrays.toString(integerTest.toArray()));
}
}