读书人

类型转换错误

发布时间: 2013-10-18 20:53:13 作者: rapoo

类型转换异常
什么情况下会导致同一种类型转换异常?
比如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 类型,但相互强制转换的话,会报错。
[解决办法]
向上转型都不会出现错误,系统默认,但是向下转型虚拟机会报错,需要进行强转。

读书人网 >J2SE开发

热点推荐