【发布时间】:2013-02-23 07:17:25
【问题描述】:
为什么Collection<E>.toArray()(非参数化方法)返回Object[]?
这是有意识做出的决定之一吗?如果toArray() 方法想要返回E[],有什么原因吗?
【问题讨论】:
-
类型擦除是原因。 java 在运行时不知道 T 是什么 - 因此它无法创建适当类型的数组。 toArray 的另一个“类型安全”变体需要一个具有正确类型(在编译时固定!)的“原型”数组,它可以复制。
-
这是历史性的。该方法早于泛型,并保持其现有形式以避免破坏遗留代码。
-
我不太确定。我看不出有任何方法可以在该方法中获得
E的类。 -
Why does Java's Collection<E>.toArray() return an Object[] rather than an E[]? 的可能副本。请忽略我在投票时发布的帖子 - 我粘贴了错误的链接。
标签: java arrays generics collections