java集合。toArray()方法,详细信息
为什么它不起作用
List<String> lista = new ArrayList<>();
lista.add("Lol");
lista.add("ball");
String [] array = (String[])lista.toArray();
它抛出一个RunTimeException (ClassCastException)
,我知道还有另一个方法用于返回列表中包含的对象,但是幕后发生了什么?我的意思是,我正在将一个对象数组转换为一个字符串数组。所以它应该编译,但它没有。
提前谢谢
# 1 楼答案
有两个toArray()版本。你可以用另一个
# 2 楼答案
改为使用toArray(T[]a)
即
这确保toArray返回String[]类型的数组
正如其他人所指出的,toArray()返回Object[]类型的数组,并且从Object[]到String[]的强制转换是非法的
# 3 楼答案
对象数组不是字符串数组,不能将强制转换为一个
勾选this
# 4 楼答案
List lista=新阵列列表<&燃气轮机;(); ---&燃气轮机;List lista=new ArrayList()
# 5 楼答案
List.toArray() 返回一个
Object[]
,因为type erasure。在运行时,列表不知道是否有字符串对象。从那里你可以看到错误的来源不能将
Object[]
类型强制转换为String[]
# 6 楼答案
该版本的toArray()返回
Object[]
。即使对象数组中的所有对象都是字符串,也不能将其强制转换为字符串数组您可以使用
lista.toArray(new String[lista.size()]);
版本正确获取实际类型