Java
Effective Java #04 객체 생성을 막을 때는 private 생성자를 사용하라
NaHyungMin
2016. 4. 13. 15:26
생성자를 생략하면 컴파일러는 자동으로 인자없는 public 기본 생성자를 만들어 버린다.
사용자는 자동 생성자와 일반 생성자를 구별할 수 있는 방법이 없다.
객체를 만들 수 없도록 하려고 클래스를 abstract로 선언해봤자 하위 클래스를 정의하는 순간 객체 생성이 가능해지며
상속 받아 사용하는 것이 맞다고 생각 할 수도 있다.
이 경우 기본 생성자는 클래스에 생성자가 없을 때 생성되니, private 생성자를 클래스에 넣어 객체 생성을 방지해야 된다.
1 2 3 4 5 6 7 8 9 | //객체를 만들 수 없는 유틸리티 클래스 public class UtilityClass{ //기본 생성자가 자동 생성되지 못하도록 하여 객체 생성 방지 private UtilityClass(){ throw new AssertionError(); } ... //나머지 생략 } | cs |