运行时出现 java.lang.ClassCastException

标签 java type-conversion

我在以下代码中收到 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/

相关文章:

c++ - C++ 中的默认参数不匹配?

swift - 如何在 Swift 3 中将 Any 转换为 CGFloat

java - Struts 2中如何正确使用<div>

java - 发现从元素 'jaxrs:servicebeans' 开始的无效内容”

java - 当报告任务中包含 jar 时,Jcoco 不会生成报告

flutter - 如何在 dart 中将时间戳字符串从 24 小时格式转换为 12 小时格式?

java - 在测试类中设置字段时出现 NullPointerException

java - import package.* 在 eclipse 中导入方法

python - 无法转换数据框列数据类型

c++ - 函数指针和返回类型转换