一尘不染

java: (String[])List.toArray() gives ClassCastException

java

以下代码(在android中运行)始终在第三行中给我ClassCastException:

final String[] v1 = i18nCategory.translation.get(id);
final ArrayList<String> v2 = new ArrayList<String>(Arrays.asList(v1));
String[] v3 = (String[])v2.toArray();

当v2为Object [0]以及其中包含字符串时,也会发生这种情况。知道为什么吗?


阅读 304

收藏
2020-03-14

共1个答案

一尘不染

这是因为当您使用

 toArray() 

它返回一个Object [],该对象不能转换为String [](即使内容为String),这是因为toArray方法仅获得一个

List 

并不是

List<String>

因为泛型仅是源代码,在运行时不可用,因此无法确定要创建哪种类型的数组。

采用

toArray(new String[v2.size()]);

分配正确的数组类型(String []和正确的大小)

2020-03-14