java.lang.ClassCastException(java强制类型转换异常)

ClassCastException,从字面意思上看,是类型转换异常,通常是进行强制类型转换时出的错误。下面对产生ClassCastException异常的原因进行分析,

然后给出这种异常的解决方法:

这种异常是如何产生的呢?举一个比较形象的例子。

Animal表示动物,Dog表示狗,是动物的子类,Cat表示猫,是动物的子类,看下面的代码:

Animal a = new Dog();// (1)
Animal b = new Cat();// (2)
Dog c = (Dog)a;// (3)
Dog d = (Dog)b;// (4)

第三行代码和第四行代码基本相同,从字面意思看都是把动物(Animal)强制转换成(Dog),但是第四行代码将产生java.lang.ClassCastException。原因是你要把一个猫(b这是动物猫)转换成狗,而第三行中是把狗转换成狗,所以可以。

遇到这样的异常的时候是如何解决的呢?如果你知道要访问的对象的具体类型,直接转换成该类型即可。如果不能确定类型,可以通过下面的两种方式进行处理(假设对象为o):

1.通过反射可以获取具体类型。

o.getClass.getName();//得到具体的类型,可以通过输出语句输出这个类型,然后根据类型进行具体的处理。

2.通过

if(o instanceof TYPE)//判断对象o是否实例化于某个类型

来判断o的类型是什么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值