인프런 커뮤니티 질문&답변

Levi님의 프로필 이미지
Levi

작성한 질문수

자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)

질문드려요

작성

·

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가 반환됩니다.

Levi님의 프로필 이미지
Levi
질문자

위의 코드에서는 생성한 객체의 해시코드가 저장되어서 null값이 아니게 되는건 맞나요?

Levi님의 프로필 이미지
Levi

작성한 질문수

질문하기