我在以下代码中收到 ClassCastException:
Destination[] destinations;
ArrayList<Destination> destinationsList = new ArrayList<Destination>();
// .....
destinations = (Destination[]) destinationsList.toArray();
我的 Destination 类如下所示:
public class Destination {
private String code;
Destination (String code) {
this.code = code;
}
public String getCode () {
return code;
}
}
从语法上讲,我没有收到任何错误,这只发生在运行时。但这很令人困惑,因为不是所有类本质上都是 Object 类的派生类吗?如果是这样,为什么会出现这种转换错误?
最佳答案
toArray()
返回一个 Object[]
。您需要的是toArray(T[] a)
由于类型删除,泛型集合无法创建类型化数组。
通过使用重载方法,您可以帮助它创建 Destination
对象的类型化数组。
使用
目的地 = destinationsList.toArray(new Destination[destinationList.size()]);
关于运行时出现 java.lang.ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19972850/