이 코드를 정의했습니다.때때로이 클래스의 static 변수가 null입니까?
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
아주 좋은 지적. 하나의 인스턴스만을 보장합니다. –