규칙 4. 객체 생성을 막을 때는 private 생성자를 사용해라

정적 메서드나 필드만 모은 클래스가 필요한 경우는 다음 세가지로 볼 수 있다.

1.자바의 기본 자료형 값 또는 배열에 적용되는 메서드를 한군데 모아둘 때.(java.lang.Math, java.lang.Arrays)
2.특정 인터페이스를 구현하는 개체를 만드는 팩터리 메서드 등의 정적 메서드를 모아놓을 때(java.util.Collection)
3.final 클래스에 적용할 메서드들을 모아놓을 때(상속하여 메서드 추가가 불가능하므로)

위의 경우에 객체를 생성하는건 이상하다!.
하지만 생성자를 생략하면 디폴트 생성자가 만들어진다. 이로인해 자신이 생각도 못한사이에 API에 추가되어 있을 수 있다
그렇다고 abstract로 선언하는것도 바보같은일이다. 상속으로 인해 객체 생성이 가능하므로…
객체생성을 막기위해서는 private 생성자를 생성하자
이를 통해 하위 클래스 또한 만들 수 없게 할수 있다.

Share