List<String> list = getNames();//this returns a list of names(String).
String[] names = (String[]) list.toArray(); // throws class cast exception.
我不明白为什么?任何解决方案,解释都表示赞赏。
答案 0 :(得分:5)
这是因为无参数toArray
生成Object
s的数组。您需要调用以输出数组作为参数的重载,并传递String
的数组,如下所示:
String[] names = (String[]) list.toArray(new String[list.size()]);
在Java 5或更新版本中,您可以删除演员。
String[] names = list.toArray(new String[list.size()]);
答案 1 :(得分:0)
您正试图从Object[]
类投射。类本身是类型Object
的数组。您必须逐个单独转换,将元素添加到新数组中。
或者你可以使用已经实现的方法,通过这样做:
list.toArray(new String[list.size()]);