赞
踩
报错: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,就是因为上层代码的改变,致使我下层的代码出现这个错误。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。