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