【问题标题】:Hashmap crashing eclipseHashmap 崩溃日食
【发布时间】:2011-10-03 11:12:04
【问题描述】:

我正在尝试通过解析 Android 中的 plist 文件来加载哈希图,使用此处的 plist 解析器:https://github.com/ZhouWeikuan/cocos2d。 这在过去一直运行良好,但最近我的程序在使用此哈希映射时(解析后)出现空指针异常。 当我尝试调试时,eclipse 开始表现得很奇怪。解析器返回哈希图,我可以在变量视图中查看它的值。当我跨过分配给“世界地图”的线时,日食挂起。当试图在调试模式下查看 worldMap 的值时,我可以看到一个空行但没有值 - 最终 eclipse 崩溃了。

Map worlds = (Map)getWorlds().get("Worlds");
Map worldMap = (Map)worlds.get(String.valueOf(world));
Map levels = (Map)worldMap.get("Levels");

但是,当正常运行程序时,空指针异常会在这些行之后出现。 另外,当我尝试调试时,它不会总是在同一个位置崩溃,所以我很难找到这个错误的来源......

有人知道怎么回事吗?

【问题讨论】:

    标签: java android eclipse plist hashmap


    【解决方案1】:

    无法确切告诉您发生了什么,但 NullPointerException 肯定是一个很大的提示。

    在上述示例中的每一行代码之后添加一些空检查,我敢打赌,您将能够很快找到错误:

    Map whatEverThisIs = (Map)getWorlds();
    if (whatEverThisIs == null) {
       /* Do something here */
    }
    Map worlds = (Map)whatEverThisIs.get("Worlds");
    if (worlds == null) {
       /* Do something here */
    }
    Map worldMap = (Map)worlds.get(String.valueOf(world));
    if (worldMap == null) {
       /* Do something here */
    }
    Map levels = (Map)worldMap.get("Levels");
    if (levels == null) {
       /* Do something here */
    }
    

    【讨论】:

    • 好吧,f*k。我以为我在问这个问题之前已经仔细检查了所有内容。当所有键都是字符串时,我正在做 *map.get(integervalue) ...
    • 太棒了,很高兴你把它弄明白了!
    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 2010-11-14
    • 2013-08-18
    • 2019-03-08
    • 2016-08-29
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多