這是凌晨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)
}
謝謝!對不起,它太瑣碎了......
不相關,但儘量避免使用雙括號HashMap初始化器,並且'code.getClass()== String.class'應該是'code instanceof String'(更容易閱讀,鍵入更快,避免可能的NPE)。 – Thilo
@Thilo - 實例初始值設定項有什麼問題? –
@Ted:它創建一個(不必要的)HashMap的子類。 – Thilo