【问题标题】:ClassCastException when converting from Object type to Integer type in Java [duplicate]在 Java 中从 Object 类型转换为 Integer 类型时出现 ClassCastException [重复]
【发布时间】:2020-05-17 00:07:35
【问题描述】:

首先,如果这个问题看起来很愚蠢,请原谅。实际上,我是 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 类的一个实例,这意味着强制转换在逻辑上是正确的。我弄错了吗?

提前致谢。

【问题讨论】:

  • 为什么不按照你最初的方式来考虑呢? Integer[] ob = new Integer[2];?

标签: java classcastexception


【解决方案1】:

不,这样不行。

考虑这是否有效:

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"

如果您使用 new Integer[2] 创建数组,这将起作用 - 然后当您尝试将字符串放入其中时,您会得到一个 ClassCastException

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多