开发者

Java异常处理之java.lang.ClassCastException问题

开发者 https://www.devze.com 2024-08-10 13:21 出处:网络 作者: 小红的成长日记
目录类型转换异常:两个类型间转换不兼容Java.lang.ClassCastException:异常解决!报错代码实际问题出在总结类型转换异常:两个类型间转换不兼容
目录
  • 类型转换异常:两个类型间转换不兼容
    • Java.lang.ClassCastException:异常解决!
    • 报错代码
    • 实际问题出在
  • 总结

    类型转换异常:两个类型间转换不兼容

    java.lang.ClassCastException:异常解决!

    下面仅仅展示部分代码:

            //java1和java2都是list集合
            Map map = new HashMap();
    
            map.put("Java1",java1);
            map.put("Java2",java2);
    
            Set set = map.keySet();
            for (Object obj : set){
                
               StudentPra stu65 = (StudentPra) obj; //改行报错
               System.out.println(stu65.getClassStu());
               
               List stuList = (List) map.get(obj);
               
               for (Object o2 : stuList){
    
                   StudentPra students = js(StudentPra) o2;
    
                   System.out.println("姓名"+students.getName()+",生日"+students.getBrithday());
    
               }
            }

    报错代码

    StudentPra stu65 = (StudentPra) obj;

    1.首先,读报错信息:

    Exception in thread “main” java.lang.ClassCastException: java.lang.String cannot be cast to cn.xiaozheng.test.StudentPra

    at cn.xiaozheng.test.StudentPraTest.main(StudentPraTest.java:53)

    2.剖析:

    java.lang.String cannot be cast to cn.xiaozheng.test.StudentPra

    类型转换异常,就是类型不兼容。

    3.看代码

    Map map = new HashMap();
    map.put("Java1",java1);

    我这里键存储的类型为String类型;

           for (Object obj : set){
                
               StudentPra stu65 = (StudentPra) obj; //改行报错
               System.out.println(stu65.getClassStu());
               
               List stuList = (List) map.get(obj);
               
               for (Object o2 : stuList){
               ...
               }
           }

    而我在改行把String类型转换为了StudentPra类型,所以在后来需要通过键名获取到键值的时候,出现类型不兼容的问题。

    StudentPra stu65 = (StudentPra) obj; //改行报错

    实际问题出在

    List stuList = (List) map.get(obj);

    无法正确通过Sphptring类型的键获取到对应类型的值!

    其实我的代码在书写的时候就有点问题:因为我定义的键的类型为String类型,所以我大可直接输出,但是现在也算是收获了一种异常处理!

    正确代码:

            Map map = new HashMap();
    
            map.put("Java1",java1);
            map.put("Java2",java2);
    
            Set set = map.keySet();
            for (Object obj : set){
    
                System.out.println(objsj);
    
               List stuList = (List) map.get(obj);
    
               for (Object o2 : stuList){
    
                   StudentPra students = (StudentPra) o2;
    
                   System.out.println("姓名"+students.getName()+",生日"+students.getBrithday());
    
               }
            }

    总结

    以上为个人经验,希望能给python大家一个参考,也希望大家多多支持编程客栈(www.cppc编程客栈ns.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号