gpt4 book ai didi

java - 为什么 Java 的 Collection.toArray() 返回 Object[] 而不是 E[]?

转载 作者:IT老高 更新时间:2023-10-28 20:54:09 25 4
gpt4 key购买 nike

在 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

最佳答案

这是一个很好的问题。答案是泛型也称为“删除”。它不仅仅是一个名字。泛型编码的信息仅在编译时使用,然后被删除。所以,JVM 甚至不知道这个泛型 E ,因此无法创建数组 E[] .

其他方法toArray(T[] a)在运行时从参数接收有关类型的信息。这就是这个方法的原型(prototype)是 <T> T[] toArray(T[] a) 的原因。 :它获取类型为 T 的数组,并且可以返回类型为 T 的数组。类型作为参数传递。

关于java - 为什么 Java 的 Collection<E>.toArray() 返回 Object[] 而不是 E[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com