关于java:将Object数组转换为String数组抛出ClassCastException

Casting Object array into String array throws ClassCastException

本问题已经有最佳答案,请猛点这里访问。
1
2
3
List<String> list = getNames();//this returns a list of names(String).

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

我不明白为什么?如有任何解决办法,请解释。


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

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

在Java 5或更新版本中,您可以删除CAST。

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


您正试图从Object[]类中进行强制转换。类本身是Object类型的数组。您必须逐个强制转换,将元素添加到新数组中。

或者,您可以通过执行以下操作来使用已经实现的方法:

1
list.toArray(new String[list.size()]);