我在Java中偶然發現了這個奇怪的事情。編碼時,我不小心忘了實例化Map。在將數據放入它的過程中,一切都沒有錯誤,但是在得到它們時,我得到了明顯的NullPointerException。這裏是我使用的代碼片段:把數據放入null地圖
public class Loader {
private static Map<String, Object> map;
public static load() {
//...
// read lines and put them into map
map.put(line, new Object()); // <-- NO ERROR
//...
}
public static parse(){
//...
for(...){
map.get(key); //<-- ERROR on map (NullPointerException)
}
//...
}
}
提供的代碼是存根,主要目的是演示奇怪的地圖行爲。那麼爲什麼有可能插入數據爲空? 我正在使用Java * 1.6.0_29 *。
請注意這段代碼是完整的,map不會在其他地方初始化;代碼是完整的。
或者a)當你到達'map.put'時,你的映射不爲null或者b)你永遠不會執行那條線。 – assylias 2012-08-14 13:02:32
爲什麼你認爲你的'load'方法曾被稱爲? – Roman 2012-08-14 13:03:07
如果你試圖在'map.put'和'map.get'之前和之後的'sysout'地圖呢? – 2012-08-14 13:05:14