位于here.阅读这些文档后,我不清楚这种区别的原因。明显不同的是第一个方法返回一个Object数组,看起来第二个返回一个Generic数组。您能否解释一下这些将如何以不同的方式实施,以及它们之间的区别是什么?
答案 0 :(得分:1)
方法
<T> T[] toArray(T[] a)
已经将数组作为参数获取,因此能够返回具有相同基类型的数组。
方法
Object[] toArray()
不知道基类型(提醒:泛型类型在运行时被擦除),因此它只能返回一个对象数组。
简单地说:对于Collection<String>
,您在调用第一种方法时会获得String[]
,并且在调用第二种方法时会得到Object[]
。这些是不同的类型。
请注意:这与收藏品一样。由于泛型类型在运行时被擦除,List<String>
和List<Object>
在运行时是相同的List
类型。
答案 1 :(得分:-1)
这些方法返回数组内集合的元素。
两种方法之间存在两个差异
对于你的代码,它不会编译
List<String> myCollection = new ArrayList<>();
nyCollection.add("example");
Object[] array1 = myCollection.toArray();
// a new array will be created by the toArray method
String[] array2 = myCollection.toArray(new String[0]);
// the provided array will be used
String[] array3 = myCollection.toArray(new String[2]);