在Java泛型出现之前,
使用泛型后,
参见:
Collection.toArray()
无法知道开发人员期望的数组类型(特别是对于空集合)。据我所知,这是使用惯用语collection.toArray(new E[0])
的主要理由。使用泛型后,
Collection<E>.toArray()
只能返回一个由E
及其特化实例组成的数组。我不明白为什么返回类型仍然是Object[]
而不是E[]
。我认为,返回E[]
而不是Object[]
不应该破坏现有代码。参见:
Collection.toArray()
,Collection.toArray(T[])
和相关主题java: (String[])List.toArray() gives ClassCastException。
new E[0]
?这对JVM在运行时有什么意义?无论是Collection
还是toArray()
方法在运行时都没有关于E的任何信息。 - Lukas Eder