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

类型转换异常
什么情况下会导致同一种类型转换异常?
比如String a = (String)obj
异常

------解决方案--------------------
父类转子类特别容易出现,我是这么理解:

父类A
子类A1,A2

A 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)obj

obj不是String的时候导致 转换异常
------解决方案--------------------
个人理解:向上转型一般不会,但是向下转型的话,很有可能出现异常
例如:基本数据类型转换的时候:
float a=1.0;
这样编译器是会提示的;因为a是float型的,而1.0编译器是默认double型的,那么的话,由double型转换成float型会丢失精度,所有会出现报错;

结合你上面的就可以知道了,既然你已经强制转换了,怎么会出错呢?

------解决方案--------------------
Child1 和 Child2 都继承自 Parent。
Child1 和 Child2 都是 Parent 类型,但相互强制转换的话,会报错。
------解决方案--------------------
向上转型都不会出现错误,系统默认,但是向下转型虚拟机会报错,需要进行强转。