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的类型是什么。

转载于:https://blog.51cto.com/liuyh/803625

java.lang.ClassCastException(java强制类型转换异常)相关推荐

  1. 已解决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异常的正确解决方法,亲测有效!! ...

  2. mysql:java.lang.ClassCastException: java.base/java.math.BigInteger出现类型转换错误

    一.错误信息 mysql:java.lang.ClassCastException: java.base/java.math.BigInteger cannot be 二.解决方法 这个就是因为你用的 ...

  3. nested exception is java.lang.ClassCastException: java.lang String cannot be cast to java.util.Map

    今天来此记录下自己犯了多次的错误,就是在本地服务起了之后,在页面点击看效果报错,页面显示异常,后端报错,如下: falied to handle or send message;nested exce ...

  4. 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. ...

  5. 报错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,报错: ...

  6. 运行maven项目,运行报错Caused by: java.lang.ClassCastException: java.Interger cannot be cast to java.String

    错误起因 最开始,调用的是 findByAid(Integer aid),传入的是int 类型的参数,运行没有错误. 后来,由于需要,定义了同样的方法,接收的是String类型的参数,对应的xml中的 ...

  7. 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 ...

  8. 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 ...

  9. java lang ClassCastException java lang Integer cannot be ca

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1.错误 ...

  10. java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigD

    解决:将int类型转成BigDecimal类型就可以了 filtrationList.add(new Filtration(MatchType.EQ,BigDecimal.valueOf(0),&qu ...

最新文章

  1. 编译器 llvm clang 源码转换示例
  2. MySQL练习题:常用函数
  3. 独家 | 13大技能助你成为超级数据科学家!(附链接)
  4. 安卓开发30:AsyncTask的用法
  5. RTEMS 4.9.4 bootcard.c 中的 boot_card 函数分析
  6. C#入门教程-注释的使用
  7. 5.7 echo:显示一行文本
  8. Windows2003下面的批量创建随机用户程序(.NET多线程)
  9. mac 或linux上 pip 不支持ssl的问题
  10. 拿下京东榜单第五首战告捷,看联想手机如何上演王者归来
  11. VS2019-C++警告-C6385读取数据无效
  12. 计算机输入输出设备说课稿,信息技术七年级西交大版 第三节 计算机系统的组成与工作原理计算机系统及工作原理说课稿 (共15张PPT)...
  13. git tig使用技巧_如何使用Tig浏览Git日志
  14. 腾讯“狠心”出手了,这款游戏,未成年人每天限玩1.5小时
  15. php框架中数据库模型层原理,简单模拟ThinkPHP框架模型层对数据库的链式操作-Go语言中文社区...
  16. 异常值(outlier)
  17. 2月6日 KNN和Bayes和决策树学习总结
  18. SwitchHosts
  19. 计算机用三角函数时如何用弧度制,5.1.2弧度制教学设计
  20. JAVA游戏引擎!FXGL 教程 总目录

热门文章

  1. java注解和反射学习
  2. 51Nod 1009 数字1的数量 数位dp
  3. js中push(),pop(),unshift(),shift()的用法小结
  4. Codeforces Round #402 D String Game(二分)
  5. [bzoj3238]差异(后缀数组+单调栈)
  6. 涨知识了!阿里、百度、腾讯的名字竟然是这样来的
  7. System.ComponentModel.Component : MarshalByRefObject, IComponent, IDisposable
  8. Javascript Math.ceil与Math.round与Math.floor区别
  9. 阿里旺旺在线客服代码 贸易通在线状态代码
  10. STM32之GPIO原理