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数组,如下所示:
在Java 5或更新版本中,您可以删除CAST。
- 这不是多余的演员吗?手头没有编译器,但我不明白为什么没有。另外,我认为,如果链接到一些关于协变/逆变的解释,答案就会很完整。
- 仅在Java 5和以后的VoO;在Java 5之前是必需的。
- 我不知道Java 5仍然被普遍使用。
- 哦,对了,Java 5之前函数已经存在,所以是的,它有不同之处。虽然我希望没有人真正使用Java 1.4了。
您正试图从Object[]类中进行强制转换。类本身是Object类型的数组。您必须逐个强制转换,将元素添加到新数组中。
或者,您可以通过执行以下操作来使用已经实现的方法:
1
| list. toArray(new String[list. size()]); |