gpt4 book ai didi

java - 为什么 List.toArray() 返回 Object[] 而不是 String[]?如何解决这个问题?

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:13 26 4
gpt4 key购买 nike

有人知道为什么 Java 1.6 有这种行为吗:

List<String> list = ArrayList<String>();
String[] arr = (String[]) list.toArray();

我得到一个 ClassCastException,因为它返回 Object[] 而不是 String[]。

我以为 List<T>.toArray()应该返回 T[] - 不?有谁知道为什么语言中存在这种不便?以及如何解决这个问题?如何从 List<String> 获取 String[]不循环遍历项目?

最佳答案

您需要传入一个数组,以便其运行时类型可以被 toArray 用作提示。尝试使用 toArray(new String[0]) 代替。您还可以传入预先确定大小的数组。

要理解,请考虑需要执行什么类型的删除

new T[4]

工作。如果 Java 允许这样做,那么它在删除后所能做的最好的事情就是

new Object[4]

大多数toArray实现使用java.lang.reflect.Array给定作为 Class 传递的类型提示,构造正确类型的输出数组。

关于java - 为什么 List<String>.toArray() 返回 Object[] 而不是 String[]?如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48023859/

26 4 0
文章推荐: python - `if` 和 `def` 下的缩进代码在 Python 中都称为 block 吗?
文章推荐: 命令 "who -b"的行为不同
文章推荐: html - 如何使带有表单输入的内部
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com