读书人

!关于对象之间类型转化有关问题

发布时间: 2012-03-29 12:53:12 作者: rapoo

求助!关于对象之间类型转化问题
将一个超类的对象强制转换为一个子类对象,在运行时系统会产生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楼的正确,要结合多态使用

读书人网 >J2SE开发

热点推荐