아이템 4. 인스턴스화를 막으려거든 private 생성자를 사용하라
만약, 정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 있을 것이다. 예를 들어, java.lang.Math와 java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서들을 모아놓을 수 있다. 또한 java.util.Collections처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드를 모아놓을 수 있다. 또는 final 클래스와 관련한 메서드들을 모아놓을 때에도 사용한다.
이러한 정적 멤버만을 담은 유틸리티 클래스는 인스턴스로 만들지 않고 사용하는 것이 낫다. (🤔 나는 여태까지 뭣도 모르고 정적 팩토리 메서드로 사용했는데, 맞았다니.. 다행이다) 나 말고도, 인스턴스 해당 유틸리티 클래스를 인스턴스화해서 사용하지 못하도록 (= 외부에서 생성자를 사용하지 않도록) 하기 위해서 private 생성자를 추가하자. private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있다. 또한 상속을 불가능하게 하는 효과도 있다.