본문 바로가기

프로그래밍/JAVA

[JAVA] Effective Java - 4. 인스턴스화를 막으려면 private 생성자를 사용

반응형

<심플한 내용이라 간단하게 정리>

 

정적 멤버로만 이루어진 클래스

1. 유틸리티 성 클래스

 ex) java.lang.Math, java.util.Arrays

 

2. 특정 인터페이스를 구현하는 객체를 생성해주는 클래스

 ex) java.util.Collections

 

3. final 클래스와 관련된 메서드들을 모아놓을 때

여기선 final 클래스란 상속이 불가한 클래스

final class Service {
}

 

이런 유틸리티 클래스는 대개 인스턴스화 하지않는다.

그렇다고 생성자를 명시하지않으면 컴파일러가 자동으로 public 기본 생성자를 만들어준다. -> 원하는 방향이 아님

그때, private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있다.

class Service {
  private Service() {
    throw new AssertionError();
  }  
}

또한 생성자 호출 시 에러를 발생시켜 어떤 환경에서도 인스턴스화되는 것을 막아준다.

대신 상속이 불가해진다.

반응형