[책리뷰/Effective Java] 객체 생성과 파괴

OCTOBER 04, 2020

아이템4) 인스턴스화를 막으려거든 private 생성자를 사용하라

  • 정적 멤버만을 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한 게 아니다.
  • 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어주며, 사용자는 이 생성자가 자동 생성된 것인지 구분할 수 없다.
  • 상속이 불가능한 클래스가 된다.
    — 모든 자식 생성자는 상위 클래스의 생성자를 호출하게 되는데, 이를 private로 선언하였기 때문에 호출이 불가능하다.
public class Utility {
  private Utility() {
    throw new AssertionError();
  }
}

작업 기록 블로그