以下代码(在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]以及其中包含字符串时,也会发生这种情况。知道为什么吗?
这是因为当您使用
toArray()
它返回一个Object [],该对象不能转换为String [](即使内容为String),这是因为toArray方法仅获得一个
List
并不是
List<String>
因为泛型仅是源代码,在运行时不可用,因此无法确定要创建哪种类型的数组。
采用
toArray(new String[v2.size()]);
分配正确的数组类型(String []和正确的大小)