Inheritance 强制转换一个变量,不确定它为什么会给出ClassCastException
我们有以下代码: 我们有这样的指示:Inheritance 强制转换一个变量,不确定它为什么会给出ClassCastException,inheritance,casting,Inheritance,Casting,我们有以下代码: 我们有这样的指示: mySub = (SubClass) mySuper; 对我来说,这看起来像一个合法的演员,但它给了一个ClassCastException。为什么会这样 从Oracle文档 抛出,指示代码试图将对象强制转换为它不是实例的子类。例如,以下代码生成ClassCastException: Object x = new Integer(0); System.out.println((String)x); Eg: Object x = new Intege
mySub = (SubClass) mySuper;
对我来说,这看起来像一个合法的演员,但它给了一个ClassCastException。为什么会这样
从Oracle文档
抛出,指示代码试图将对象强制转换为它不是实例的子类。例如,以下代码生成ClassCastException:
Object x = new Integer(0);
System.out.println((String)x);
Eg: Object x = new Integer(0); //works fine
String s = (String)x; //Will raise an exception here as Object
is not a subclass of String.
您可以将子类的实例强制转换为其超类,但不能将子类的实例强制转换为其超类。@RobbyCornelissen,例如mySuper=superclass mySub?只要Super引用子类对象,从Super向下转换到Sub就可以了。在本例中,Super引用一个Super对象。。如果你不得不沮丧,那就打字吧check@Michiel确实是。@Lewsterin我的评论是关于底层实例的,你的是关于引用类型的。