java:(String )List.toArray()给出ClassCastException
下面的代码(在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]的时候,当它有string的时候。 任何想法为什么?
这是因为当你使用
  toArray() 
它返回一个Object [],它不能被转换成一个String [](即使这些内容是string)这是因为toArray方法只获得一个
 List 
并不是
 List<String> 
因为generics只是一个源代码,并且在运行时不可用,所以它不能确定要创build的数组types。
使用
 toArray(new String[v2.size()]); 
它分配正确的数组(String []和正确的大小)
 你正在使用错误的toArray() 
请记住,Java的generics大多是语法糖。 一个ArrayList实际上并不知道它的所有元素都是string。
 要解决您的问题,请致电toArray(T[]) 。 在你的情况下, 
 String[] v3 = v2.toArray(new String[v2.size()]); 
 请注意,通用化formstoArray(T[])返回T[] ,所以结果不需要显式强制转换。