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