父类转子类特别容易出现,我是这么理解:父类A 子类A1,A2A a = new A1();A2 b = (A2)a;//基本异常定了 我的想打就是父类A,只有2属性name,age;子类A1比父类多了个address;子类A2比父类多了个school;A1继承A,所以当我说它是A也无可厚非,因为它就有name和age; 但是我要硬说它是A2,那school呢,显然没。 所以我记得书本上总结的一句:向下类型转换一定要看生成实例对象的是哪个类.
什么情况下会导致同一种类型转换异常? 比如String a = (String)objobj不是String的时候导致 转换异常
子类A1,A2A a = new A1();A2 b = (A2)a;//基本异常定了
我的想打就是父类A,只有2属性name,age;子类A1比父类多了个address;子类A2比父类多了个school;A1继承A,所以当我说它是A也无可厚非,因为它就有name和age;
但是我要硬说它是A2,那school呢,显然没。
所以我记得书本上总结的一句:向下类型转换一定要看生成实例对象的是哪个类.
比如String a = (String)objobj不是String的时候导致 转换异常
例如:基本数据类型转换的时候:
float a=1.0;
这样编译器是会提示的;因为a是float型的,而1.0编译器是默认double型的,那么的话,由double型转换成float型会丢失精度,所有会出现报错;结合你上面的就可以知道了,既然你已经强制转换了,怎么会出错呢?
Child1 和 Child2 都是 Parent 类型,但相互强制转换的话,会报错。
我是说classA强转classA时导致的,日志显示两个classLoader不同。
参考一下
http://blog.csdn.net/wangchengsi/article/details/2110647