정적 필드와 정적 메소드만을 모아 놓은 유틸성 클래스를 만드는 경우가 있다.
예를 들면
이러한 경우의 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한 것이 아니기 때문에 인스턴스화를 막아 주는 것이 좋다.
public class UtilityClass {
/**
* 기본 생성자가 만들어지는 것을 막는다(인스턴스 방지용)
* 이 클래스는 인스턴스를 만들 수 없는 유틸리티 클래스이다.
*/
private UtilityClass() {
throw new AssertionError();
}
public static String hello() {
return "hello";
}
}
이렇게 만든 유틸리티 클래스는 외부에서 사용시 정적 메소드만 사용한다.
public static void main(String[] args) {
String hello = UtilityClass.hello();