将Object数组转换为String数组会抛出ClassCastException

时间:2013-07-29 02:35:29

标签: java arrays string object classcastexception

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

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

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

2 个答案:

答案 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()]);