现在是凌晨 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/