码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • bug探索之路:List<Map>get取出元素却是String?


    一、bug初现峥嵘

    有一说一我定义的List对吧,我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里面key为insind对应的value.

    1. String response=http_sevice.doPost(url,paramMap);
    2. Gson gson = new Gson();
    3. Map<String, Object> map = new HashMap<String, Object>();
    4. map = gson.fromJson(response, map.getClass());//关键
    5. System.out.println(map);
    6. List<Map<String, Object>> data_list = (List>) map.get("data");
    7. try {// 当产生异常时,必须有处理方式。要么捕获,要么声明。
    8. Map<String, Object> data = new HashMap<String, Object>();
    9. data = gson.fromJson(String.valueOf(data_list.get(0)), data.getClass());//关键
    10. String insind = String.valueOf(data.get("insind"));
    11. return insind;
    12. } catch (IndexOutOfBoundsException e) {
    13. return "-1";
    14. }
    15. 复制代码

    总结

    说实话,这个我真的不知道该说什么了。我的脑子告诉我这是编译器和源码检查机制的问题,但是,理智想想这个java8编译器正常了多少年了,不可能有这么明显的bug。

    所以这个问题可能是我触碰到了什么不为人知的小bug吧, 也希望各位如果如果看出有什么问题的可以评论指教。

    我也是赶鸭子上架用的java做个后台,这个语言很多东西也不熟练。

  • 相关阅读:
    LeetCode每日一题(2402. Meeting Rooms III)
    营收连续上涨,一脉阳光能否打造“医学影像独角兽”?
    5个优质免费自然语言处理学习资源 | 语言技术导航
    科技驱动固定资产管理变革:RFID技术的前沿应用
    vue多级路由,实现前台,后台,登录注册界面同级
    实现自动扫描工作区npm包并同步cnpm
    [附源码]JAVA毕业设计教材管理(系统+LW)
    Elasticsearch是如何实现Master选举的?
    LeetCode每日一题(833. Find And Replace in String)
    HTML学生中秋节日网页设计模板 DIV布局大学生中秋节网页作业制作 八月十五中秋静态网页成品代码下载 中秋节日网页设计作品
  • 原文地址:https://blog.csdn.net/BASK2311/article/details/128047906
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号