java.lang.ClassCastException(java强制类型转换异常)
来源:互联网 发布:淘宝直播怎么开 编辑:程序博客网 时间:2024/06/11 05:27
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的类型是什么。
阅读全文
0 0
- java.lang.ClassCastException(java强制类型转换异常)
- java.lang.ClassCastException(java强制类型转换异常)
- java.lang.ClassCastException异常
- LayoutParams 类型转换异常:java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams
- hibernate命名查询时总是报类型转换异常:java.lang.ClassCastException
- memach类型转换异常java.lang.ClassCastException: java.lang.Byte cannot be cast to com.organization.model.
- java.lang.ClassCastException: 异常处理
- java.lang.ClassCastException异常处理
- java.lang.ClassCastException: java.lang.Integer 异常
- java.lang.ClassCastException: java.lang.Integer异常
- java.lang.ClassCastException: java.lang.Integer异常
- oracle.sql.CLOB不能转换成oracle.sql.CLOB类型的异常 java.lang.ClassCastException: oracle.sql.CLOB
- 类型转换异常处理java.lang.RuntimeException
- 【原创】java.lang.ClassCastException异常问题解决
- java.lang.ClassCastException: antlr.CommonToken异常[weblogic]
- 调用ejb出现java.lang.ClassCastException异常
- java.lang.ClassCastException: android.widget.Button异常
- Android 中java.lang.ClassCastException 异常
- Handler消息传递机制之Looper简介
- tesseract-ocr字库训练图文讲解
- 命名实体识别评估指标
- vue-cli-webpack模板配置全解析-2
- CSS实现背景不随浏览器滚动的方法
- java.lang.ClassCastException(java强制类型转换异常)
- Java多线程-多线程的引入
- php smarty web服务开发问题汇总
- js基于谷歌地图API绘制可编辑圆形与多边形
- FAT12中文件目录项时间、日期对应字节问题
- 神龙云服务器,值得期待
- Android Framework解析
- HDACM 1040 As Easy As A+B
- 1028. 人口普查(20)