java - 在 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
这意味着强制转换在逻辑上是正确的。我弄错了吗?
提前致谢。
解决方案
不,这样不行。
考虑这是否有效:
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
推荐阅读
- java - 线段和圆之间交点的 LibGDX 坐标
- c++ - 如何正确地将字符串转换为 std::chrono::system_clock::time_point?
- mongodb - 无法从 mongo 提示符加载 js 文件
- c# - 如何在 SQL 中使用列名查询日期?
- c# - 使用 iText7 修改现有 pdf 时出现路径共享冲突错误
- vba - 使用 vba 在 powerpoint 中导入 SVG
- javascript - 检测组件是从路由器 Vue 安装的
- python - 使用 matplotlib 绘制轮廓时,栅格图中缺少一行数据
- javascript - JavaScript 在突出显示和插入时不允许将点作为第一个
- youtube - Youtube API 限制增加