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

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

  • 객체를 만들 수 없도록 하려고 클래스를 abstract로 선어내 봤자 소용없다.
  • Private 생성자를 클래스에 넣어서 객체 생성을 방지하자는 것이다.
// 객체를 만들 수 없는 클래스
Public class CjhClass {
	// 디폴트 생성자가 자동 생성되지 못하도록 해서 객체 생성을 방지한다
	private CjhClass() {
		throw new AccertionError();
	}
}
  • 생성자가 private임으로 외부에서는 사용할 수 없다.
  • AssertionError는 반드시 필요한 것은 아니지만 내부에서 실수로 사용할때 바로 알수 있게 하기 위해서다.
  • 이렇게 하면 하위 클래스도 만들 수 없다. 모든 생성자는 상위 클래스위 생성자를 명시적으로든 묵시적으로든 호출할 수 있어야 하는데, 호출 가능한 생성자가 상위 클래스에 없기 떄문이다.

출처 : 조슈아 블로크, 『 Effective Java 2/E』, 이병준 옮김, 인사이트(2014.9.1), 규칙4 인용.