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);
}
}
관리자가 null이기 때문에 널 포인터 예외가 발생합니다. 코드의 다른 곳에서 Monitor 객체를 인스턴스화했습니다. 내가 "addObject"메소드를 사용하려고 할 때, "manager null"을 인쇄하기 직전에 NPE를 제공합니다 (분명히 있기 때문에).Java에서이 객체가 null 인 이유를 설명 할 수 있습니까?
내가 여기 아주 기본적인 것을 놓치고있는 것처럼 느껴진다. 아무도 도와 줄 수 있니?
관리자와 subjectMap을 '최종'으로 설정하면 컴파일러가 오류를 발견했을 수 있습니다. – Neil
그 이유를 설명해 주시겠습니까? 에서와 마찬가지로 최종 결정은 무엇입니까? – Archer
'final'은 변수에 정확히 한 번만 지정해야합니다. 클래스 멤버의 경우 생성자에서 할당을 수행해야합니다.이 코드 스 니펫에서는 완료 코드에 반드시 필요한 것은 아니지만 합당한 작업입니다. 멤버를 할당하는 것을 잊어 버리면 클래스가 컴파일되지 않습니다. – Neil