当前位置: 代码迷 >> J2SE >> !关于对象之间类型转化有关问题
  详细解决方案

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

热度:67   发布时间:2016-04-24 12:48:23.0
求助!关于对象之间类型转化问题
将一个超类的对象强制转换为一个子类对象,在运行时系统会产生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楼的正确,要结合多态使用
  相关解决方案