日期:2014-05-20  浏览次数:20745 次

求助!关于对象之间类型转化问题
将一个超类的对象强制转换为一个子类对象,在运行时系统会产生ClassCastException异常,
但是超类对象有时候是可以转换为子类对象的,请问什么情况下可以转转成功呢?

谢谢大家了

------解决方案--------------------
超类的引用本来就是指向子类的对象时可以转换.
------解决方案--------------------
ClassCastException异常 
类型不对吧

对象类型和你定义的用来存放对象的容器类型不一致!
------解决方案--------------------
Java code

public class Test {

    public static void main(String[] args) {
        Super s1 = new Super();
        Super s2 = new Derived();
        Derived d1 = (Derived) s1;  //运行出错
        Derived d2 = (Derived) s2;  //正确,因为s2指向的实际对象就是Derived类型的
    }
}

class Super {
}

class Derived extends Super {
}

------解决方案--------------------
但是超类对象有时候是可以转换为子类对象的,请问什么情况下可以转转成功呢?

你只有先把一个子类对象转化成超类对象,才可以把超类对象转化成子类.
struts的那个ActionForm就是最好的例子.

------解决方案--------------------
3楼的正确,要结合多态使用