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

二、解决

导致这个问题是因为,存进去的是list,却直接强转为map。

有这样一段代码:(注:代码已经做了“马赛克”处理)

TestObject t = new TestObject();  
List<Map<String, Object>> list1= new ArrayList<>();
Map<String, Object> map1= new HashMap<>();
map1.put("test", test);
list1.add(map1);
t.put("aaa", list1);

原来取值的时候:

TestObject testObject = (TestObject) object;

Map<String, Object> map2 = (Map<String, Object>) testObject .get("aaa");

然后就报错了java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map

是因为存进去的是list,却强转为map

所以这里要多加一层转换,先拿到list,再去取map

TestObject testObject = (TestObject) object;
List<Map<String, Object>> list2 = (List<Map<String, Object>>) testObject.get("aaa");
if (list2 == null) continue;
Map<String, Object> map2 = list2.get(0);

三、补充

有时报错:java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList..

等等诸如此类的报错,都是存进和取出的不恰当,怎么存的,就该怎么取。

有些同学可能觉得这样的代码奇奇怪怪,但是一个项目不只是一个做的,不同的人有不同的做法,我这里出现的bug,就是因为上层代码的改变,致使我下层的代码出现这个错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一碗谦谦粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值