• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

질문드려요

23.06.11 11:12 작성 조회수 161

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

질문자

2023.06.12

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