java.lang.classcastexception

406 阅读2分钟

这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战

吃饱饭才有力气写代码~

前言

又是菜鸟想要辞职的一天!故事还要从出差说起。。。不说了,就是我作为菜鸟,解决不了出差现场的问题,觉得自己菜的一无是处。能做的只是记录下来问题,以及学到的解决思路。(自己根本无法独立解决问题!)时常怀疑自己的价值~

问题

仍然是迁移环境之后出现的,页面上报服务器错误,插线看是一个接口报:java.lang.classcastexception

 List<Map<String, String>> qxList = (List<Map<String, String>>) spRightUsers;//强制类型转换

接口对应代码中确实有这样一个类型转换,于是开始上网上查

解决

java.lang.classcastexception 强制类型转换异常,网上有很多解决方案是这样的:

  • 是spring的devtools引起的,把下面的依赖去掉就可以了
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>
  • 实际应用的解决方案:首先加了try{}catch(exception e){} 做异常处理;然后对数据格式进行中转;
// 把spRightUsers定义为json格式的数据
for (Object qxList : spRightUsers) {
   JSONObject qx = (JSONObject) qxList;
   //数据处理相关代码
}

总结

所以根据这两天遇到的问题,可以发现try-catch的强大作用,代码逻辑很容易就能跑通,但是优秀的代码应该能经受得住各种考验:空指针异常、数据类型转换异常等等。这种异常处理也很考验代码编写能力。个人比较接受师傅的解决方法,所以以后的代码里像原始的那种强制类型转换要尽量避免。至于网上最容易搜索到的那个修改pom依赖的方法,我还不太能理解,但是也先记录下来吧!以后还继续写代码的话再研究~