现在是早上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)
}
谢谢!对不起,这太微不足道了......
答案 0 :(得分:6)
最有可能的原因是尝试取消从不存在的密钥返回的null。
return CONDS_MAP.get((String)code);
与
相同return CONDS_MAP.get(code).intValue();
如果Map返回null,则最后intValue
将失败。
答案 1 :(得分:0)
是的,它已被初始化,nullpointerexception可能是由一个空键引起的。