带静态Map的空指针异常

huf*_*uff 1 java static initialization exception

现在是早上5点,我有点睡着了,所以可能就是这样(我对Java也相对较新).但我不明白为什么这段代码会生成Null Exception.那时应该初始化地图,不应该吗?

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)
}
Run Code Online (Sandbox Code Playgroud)

谢谢!对不起它太琐碎了......

Thi*_*ilo 6

这很可能是因为尝试取消从非现有密钥返回的null.

return CONDS_MAP.get((String)code);
Run Code Online (Sandbox Code Playgroud)

是相同的

return CONDS_MAP.get(code).intValue();
Run Code Online (Sandbox Code Playgroud)

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