java 类型转换异常_java.lang.ClassCastException(java强制类型转换异常)
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 类型转换异常_java.lang.ClassCastException(java强制类型转换异常)相关推荐
- 已解决java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map异常的正确解决方法,亲测有效!!
已解决java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map异常的正确解决方法,亲测有效!! ...
- mysql:java.lang.ClassCastException: java.base/java.math.BigInteger出现类型转换错误
一.错误信息 mysql:java.lang.ClassCastException: java.base/java.math.BigInteger cannot be 二.解决方法 这个就是因为你用的 ...
- nested exception is java.lang.ClassCastException: java.lang String cannot be cast to java.util.Map
今天来此记录下自己犯了多次的错误,就是在本地服务起了之后,在页面点击看效果报错,页面显示异常,后端报错,如下: falied to handle or send message;nested exce ...
- ArrayMap java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Object[]
错误堆栈: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Object[]at android. ...
- 报错java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String解决踩坑
java.lang.ClassCaption: java.lang.Long cannot be cast to java.lang.String 问题背景 service传参调用mapper,报错: ...
- 运行maven项目,运行报错Caused by: java.lang.ClassCastException: java.Interger cannot be cast to java.String
错误起因 最开始,调用的是 findByAid(Integer aid),传入的是int 类型的参数,运行没有错误. 后来,由于需要,定义了同样的方法,接收的是String类型的参数,对应的xml中的 ...
- java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer
java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer 1.改sql select ...
- java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map
1.错误描写叙述 java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Mapat service ...
- java lang ClassCastException java lang Integer cannot be ca
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1.错误 ...
最新文章
- Uva673 平衡的括号
- Android之ASD组件(一)
- 7.3 程序示例--PCA 模型-机器学习笔记-斯坦福吴恩达教授
- html转图片_jupyter lab 笔记添加图片的方法汇总
- 外星人入侵 python 飞船位置_《python从入门到实践》项目一:外星人入侵
- android 汉字转拼音pinyin4j包
- 流控组件Sentinel核心注解@SentinelResource中的参数fallback和blockHandler的使用方式
- 直接在script里面换样式IE6,7,8不兼容
- android webview 重定向 goback,Android WebView 网址重定向影响 goBack
- 初来乍到!各位博客朋友多多支持!
- Linux查看设置系统时区
- 猫狗动物声音模拟器微信小程序源码
- 教你如何获得win7候选发布版序列号及下载
- python自动化运维之路~DAY1
- PostSQL编写经验(利用坐标值,创建空间要素字段)
- android studio systrace,android – Systrace输出错误
- [从零开始学习FPGA编程-34]:进阶篇 - 基本时序电路-计数器(Verilog语言)
- Ubuntu16.04使用语义分割标注工具Semantic-Segmentation-Editor
- int 几个字节 java_java中int是几个字节
- Outlook设置新folder location后无法显示default view的解决方案