작성
·
202
0
public class Company {
private static Company instance = new Company();
private Company() {}
public static Company getInstance() {
if(instance == null) {
instance = new Company();
}
return instance;
}
}
위에 코드에서 유일한 객체를 생성하면 instance에 참조값이 저장되고,
그럼 if(instance == null) 조건문에서 instance에는 참조값이 저장되어 있으므로 null이 아니라서 패스하고 return instance 하게 되는게 맞을까요?
만약 유일객체를 먼저 생성하지 않았다면 멤버변수로 private static instance;만 선언하구 함수 호출시에 유일 객체 생성해서 리턴하는 방법으로 사용하면 될까요?
객체를 생성하고 나면 인스턴스가 자동초기화된 상태일텐데 null이랑 동등 비교하니 조금 헷갈려서 질문드려요!
답변 1
0
null 여부를 체크하는건 일종의 방어적인 코드라 볼 수 있습니다. 그럴 일은 없지만 혹시라도 유일 객체가 null 이 되는 경우 이를 다시 생성해주는 의미입니다. 그렇지 않은 경우는 말씀하신 대로 이미 생성된 instance가 반환됩니다.
위의 코드에서는 생성한 객체의 해시코드가 저장되어서 null값이 아니게 되는건 맞나요?