java - 静态映射的空指针异常

标签 java exception static initialization

现在是凌晨 5 点,我有点睡着了,所以可能就是这样(而且我对 Java 还比较陌生)。但是我不明白为什么这段代码会用这段代码生成 Null Exception。到那时 map 应该已经初始化了,不是吗?

private static final Map<String, Integer> CONDS_MAP = 
    Collections.unmodifiableMap
    (
        new HashMap<String, Integer>()
            {{ 
                put("null", 0);
                put("false", 0);
                put("true", 1);
                put("numElems.lt", 2);
                put("NELT", 2);
                put("numElems.gt", 3);
                put("NEGT", 3);
            }}
    );

private int getCodeInt(Object code)
{
    if (code.getClass() == String.class)
    {
        return CONDS_MAP.get((String)code); // Null Exception here
    }
    else
    // (... etc etc)
}

谢谢!抱歉,这太琐碎了……

最佳答案

这很可能是由于尝试对从不存在的 key 返回的 null 进行拆箱造成的。

return CONDS_MAP.get((String)code);

相同
return CONDS_MAP.get(code).intValue();

如果 Map 返回 null,最后一个 intValue 将失败。

关于java - 静态映射的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7523971/

相关文章:

C++ 对每个新对象使用相同的 default_random_engine

php - 从单例类 PHP 中检索数据

java - 为什么 Libgdx Bullet 中的 ContactListener 派生类中的数组大小始终为零?

java - 为什么我的代码使用提供的集合输出可笑的数字?我正在尝试 String.format

java - 没有这样的方法错误: <init> when using rJava to create a new object

android - 当按下开/关按钮后手机返回到应用程序时,ListView中出现致命异常

c++ - 防止创建成员函数都是静态的类

java - 需要一个逻辑来将数据存储到原语中并在没有 SQLite 的情况下将它们关联起来

java - OrmLite 多对多的扭曲

java - 如何检测Java中的电源溢出