位于here.阅读这些文档,我不清楚这种区别的原因。明显不同的是第一个方法返回一个Object数组,看起来第二个返回一个Generic数组。您能解释一下这些将如何以不同方式实施,以及它们之间的区别是什么?
方法
<T> T[] toArray(T[] a)
已经将数组作为参数获取,因此能够返回具有相同基类型的数组。
方法
Object[] toArray()
不知道基类型(提醒:泛型类型在运行时被擦除),因此它只能返回一个对象数组。
简单地说:对于一个Collection<String>
,你会在调用第一种方法时得到一个String[]
,并且在调用第二种方法时你会得到一个Object[]
。这些是不同的类型。
只是一个注释:这与收藏品一样。由于泛型类型在运行时被擦除,因此List<String>
和List<Object>
在运行时是相同的List
类型。
这些方法返回数组内集合的元素。
这两种方法有两点不同
对于您的代码,它将无法编译
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]);