我定義了這段代碼。爲什麼這個靜態變量有時候會在類中變成空嗎?
public class AAA {
public static final Map<String, String> gList = new HashMap<> {{
put("xxx", "xxx");
put ....
}};
public static AAA instance;
public static AAA getInstance() {
if (instance == null)
instance = new AAA();
return instance;
}
public String calledFunc(String k) {
return gList.get(k);
}
}
public class BBB {
...
public void callingFunc(String k) {
AAA.getInstance().calledFunc(k); // <= NULL pointer some time
}
}
這是因爲內存分配失敗或它會被釋放的地方。只是不要 明白我的代碼有什麼問題。也許這不是可靠的初始化方式。
你沒有申報instance'的'類型。 – mattbdean
您需要同步getInstance()方法。 – EJP
非常好的一點。它將只保證一個實例。 –