首页 > 解决方案 > 在 Java 中从 Object 类型转换为 Integer 类型时出现 ClassCastException

问题描述

首先,如果这个问题看起来很愚蠢,请原谅。实际上,我是 Java 编程的新手。我有以下代码:

public class Test{
    public static void main(String[] args){
        Object[] ob = new Object[2];
        ob[0] = new Integer("1");
        ob[1] = new Integer("2");

        Integer[] o = (Integer)ob;
        System.out.println(o.length());
    }

}

编译此代码时classCastException会引发异常。为什么?。我知道Object类型不能转换为Integer类型。但是,实际上,数组的每个元素都是类ob的一个实例,Integer这意味着强制转换在逻辑上是正确的。我弄错了吗?

提前致谢。

标签: javaclasscastexception

解决方案


不,这样不行。

考虑这是否有效:

Object[] ob = new Object[2];
ob[0] = new Integer("1");
ob[1] = new Integer("2");

Integer[] o = (Integer)ob;
ob[0] = "Hello :)";

你期望o[0]返回什么?
一个Integer
还是字符串"Hello"

如果您使用 - 创建数组,这将起作用,那么当您尝试将 String 放入其中时,new Integer[2]您会得到一个。ClassCastException


推荐阅读