首先,如果这个问题看起来很愚蠢,请原谅。事实上,我是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());
}
}
编译此代码时,会引发< code>classCastException异常。为什么?。我知道< code>Object类型不能转换为< code>Integer类型。但事实上,数组< code>ob的每个元素都是< code>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]
返回什么?
一个整数
?
还是字符串“Hello”
?
如果您使用< code>new Integer[2]创建数组,这将会起作用,然后当您尝试将字符串放入数组时,您将会得到一个< code>ClassCastException。
主要内容:强制对象类型转换将一个类型强制转换成另一个类型的过程被称为类型转换。本节所说的 对象类型转换,是指存在继承关系的对象,不是任意类型的对象。当对不存在继承关系的对象进行强制类型转换时,会抛出 Java 强制类型转换(java.lang.ClassCastException)异常。 Java 语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进行类型转换。Java 中引用类型之间的类型转换(前提是两个类
问题内容: 我正在使用返回“对象”类型的普通对象的Web服务。调试清楚地表明此对象中存在某种Array,因此我想知道如何将“ Object”转换为Array(或类似对象)? 我尝试了以下方法: 但是没有任何效果。我总是得到一个InvocationTargetException。 我究竟做错了什么? 编辑 : 可悲的是,我不得不删除指向显示Eclipse调试器输出的图像的链接,因为它不再可用。请不要
我正在努力理解在这段代码中创建的C()对象。 我理解,当它在第3行创建时,它是一个对象,具有A类中的引用。我还了解到,您可以从B类中的引用中引用第4行的相同对象。但是我不明白第4行参考o1的施法。这改变了对象还是仅仅改变了它被引用的方式? 我真的很感激你的解释:)谢谢
我正在创建一个由数组支持的泛型类型堆栈。当我尝试创建泛型类型数组时,Java不允许我这样做。有人告诉我,我必须创建一个类型为Object的数组,并将其转换为泛型类型。我已经将对象数组转换为类型,但如何处理Java不断给我的未检查类型错误? 这就是我目前所处的位置。 更新:我正在创建一个对象数组,然后在方法的末尾将返回类型转换为T类型。
在的内部类中。 演员们在这里是怎么工作的?我在这里期待,因为我们要将一个纯超类对象转换为子类。