5
List<String> list = getNames();//this returns a list of names(String).

String[] names = (String[]) list.toArray(); // throws class cast exception.

我不明白为什么?任何解决方案,解释表示赞赏。

4

2 回答 2

5

这是因为无参数toArray会产生一个Objects 数组。您需要调用以输出数组为参数的重载,并传递一个Strings 数组,如下所示:

String[] names = (String[]) list.toArray(new String[list.size()]);

在 Java 5 或更高版本中,您可以删除强制转换。

String[] names = list.toArray(new String[list.size()]);
于 2013-07-29T02:39:33.933 回答
0

您正在尝试从Object[]. 类本身是一个类型数组Object。您必须逐个进行投射,将元素添加到新数组中。

或者你可以使用已经实现的方法,通过这样做:

list.toArray(new String[list.size()]);
于 2013-07-29T02:39:47.860 回答