
一、bug初现峥嵘

有一说一我定义的List<Map>对吧,我get(0)取出的元素也应该是Map类型没问题吧。不行,编译器告诉我,java.lang.String cannot be cast to java.util.Map。
这个意思就是说,你这个就是String类型,你别想骗我它是Map类型。
没办法嘛,你一个卑微程序猿罢了。你能干得过编译器?人家说啥就是啥吧。
二、用String声明接一下get(0)的元素

离谱的一幕出现了,IDEA源码检查机制告诉你这个就是Map,你别想虚晃一枪把他私自变成String。
我现在有理由怀疑,你这个源码检查检查机制和编译器不是一家公司产的,你俩要不要对峙一下看看自己在说什么可以嘛?
要不你俩打一架?,反正我是受不了了。
三、解决方案:先强制转换成String再用json解析成Map
我的诉求是取出data_list这个List<Map>里面的第一个Map,然后找到这个Map里面key为insind对应的value.
String response=http_sevice.doPost(url,paramMap);
Gson gson = new Gson();
Map<String, Object> map = new HashMap<String, Object>();
map = gson.fromJson(response, map.getClass());//关键
System.out.println(map);
List<Map<String, Object>> data_list = (List<Map<String, Object>>) map.get("data");
try {// 当产生异常时,必须有处理方式。要么捕获,要么声明。
Map<String, Object> data = new HashMap<String, Object>();
data = gson.fromJson(String.valueOf(data_list.get(0)), data.getClass());//关键
String insind = String.valueOf(data.get("insind"));
return insind;
} catch (IndexOutOfBoundsException e) {
return "-1";
}
复制代码
总结
说实话,这个我真的不知道该说什么了。我的脑子告诉我这是编译器和源码检查机制的问题,但是,理智想想这个java8编译器正常了多少年了,不可能有这么明显的bug。
所以这个问题可能是我触碰到了什么不为人知的小bug吧, 也希望各位如果如果看出有什么问题的可以评论指教。
我也是赶鸭子上架用的java做个后台,这个语言很多东西也不熟练。

![[附源码]java毕业设计智能超市导购系统](https://img-blog.csdnimg.cn/115bad91fc904e0a91a29db6cabb1cce.png)











![[附源码]java毕业设计智慧农业销售平台](https://img-blog.csdnimg.cn/cd344321913f45ce80756b587c5181df.png)





