인스턴스화를 막으려거든 private생성자를 사용하라
정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고
설계한것이 아님.
생성자를 명시하지않으면 public생성자가 만들어지고,
사용자는 이 생성자가 자동생성된것인지 구분하기가 어렵다
추상클래스로 만드는것으로는 인스턴스화를 막을수없기에.
private생성자를 추가하면 클래스의 인스턴스화를 막을수있다
public class UtilityClass{
//private 생성자
private UtilityClass{
throw new AssertionError();
}
}
명시적생성자가 private이므로 클래스바깥에서는 접근 불가
AssertionError 에러를 던지는것이 필수는 아니지만 클래스 안에서
실수로라도 생성자를 호출하지않도록 방지.