class Monitor {
TheManager manager;
Map<String, Subject> subjectMap;
public Monitor() {
TheManager manager = new TheManager();
Map<String, Subject> subjectMap = new HashMap<String, Subject>();
}
public void addObject(String objName, Object obj) {
if(objName == null) System.out.println("name null");
if(obj == null) System.out.println("obj null");
if(manager == null) System.out.println("manager null");
manager.addObject(objName, obj);
}
}
我得到一個空指針異常,因爲管理器爲空。我已經在代碼中的其他地方實例化了Monitor對象。當我嘗試使用「addObject」方法時,在打印「manager null」(因爲它顯然)之前,它給了我NPE。在Java中,任何人都可以解釋爲什麼這個對象爲空?
我覺得我錯過了這裏非常基本的東西......任何人都可以幫忙嗎?
請注意,如果您已經創建了manager和subjectMap'final',那麼編譯器會發現您的錯誤。 – Neil 2012-07-23 23:06:35
你能解釋一下這是爲什麼嗎?如在最後,什麼? – Archer 2012-07-23 23:13:03
'final'要求您只給變量賦值一次。在類成員的情況下,它迫使你在構造函數中進行賦值,這在這段代碼中是合理的,儘管不一定在完成的代碼中。如果您忘記分配成員,那麼該類將無法編譯。 – Neil 2012-07-23 23:26:47