java.lang.ClassCastException
来源:互联网 发布:淘宝提升信誉的方法 编辑:程序博客网 时间:2024/05/17 17:44
ClassCastException,从字面上看,是类型转换错误,通常是进行强制类型转换时候出的错误。下面对产生ClassCastException异常的原因进行分析,然后给出这种异常的解决方法。
这种异常是如何产生的呢?举一个比较形象的例子。
Animal表示动物,Dog表示狗,是动物的子类,Cat表示猫,是动物的子类。看下面的代码:
Animal a1 = new Dog(); // 1
Animal a2 = new Cat(); // 2
Dog d1 = (Dog)a1; //3
Dog d2 = (Dog)a2; //4
第3行代码和第4行代码基本相同,从字面意思看都是把动物(Animal)强制转换为狗(Dog),但是第4行代码将产生java.lang.ClassCastException。原因是你要把一个猫(a2这只动物是猫)转换成狗,而第3行中是把狗转换成狗,所以可以。
从上面的例子看,java.lang.ClassCastException是进行强制类型转换的时候产生的异常,强制类型转换的前提是父类引用指向的对象的类型是子类的时候才可以进行强制类型转换,如果父类引用指向的对象的类型不是子类的时候将产生java.lang.ClassCastException异常。就是上面a1和a2都是动物,但是a1这只动物是一只狗,而a2这只动物是猫,所以要把a1转换成狗可以,因为a1本身就是狗,而a2是一只猫,所以要转换成狗就出错了。
遇到这样的异常的时候如何解决呢?如果你知道要访问的的对象的具体类型,直接转换成该类型即可。如果不能确定类型可以通过下面的两种方式进行处理(假设对象为o):
1、通过o.getClass().getName()得到具体的类型,可以通过输出语句输出这个类型,然后根据类型进行进行具体的处理。
2、通过if(o instanceof 类型)的语句来判断o的类型是什么。
- java.lang.ClassCastException翻译
- java.lang.ClassCastException
- java.lang.ClassCastException问题
- java.lang.ClassCastException
- java.lang.ClassCastException
- java.lang.ClassCastException:
- java.lang.ClassCastException:
- java.lang.ClassCastException: $Proxy1
- java.lang.ClassCastException
- hibernate java.lang.ClassCastException
- java.lang.ClassCastException错误
- java.lang.ClassCastException
- java.lang.ClassCastException
- java.lang.ClassCastException
- java.lang.ClassCastException异常
- java.lang.ClassCastException
- java.lang.ClassCastException
- java.lang.ClassCastException
- 程序员的奋斗史(三十九)——大学断代史(三)——我和知乎邂逅
- 使用类 友元简介
- Fragment & Task
- 使用Visual Studio 创建可视Web Part部件
- 遍历json对象并获取json对象的长度(不是json数组)
- java.lang.ClassCastException
- [C/C++]使用上下左右控制菜单项
- 葡萄奶酥
- dojo小例子(15)给dojo on的事件处理函数传递自定义参数的两种方法
- 插入排序
- The method Inflate() in android
- 关于:小米唐沐:十年经验 做产品32字方针的摘录
- [PhoneGap] [Cordova] 生成Jar文件
- 利用java模拟登陆