JavaStudy

ITEM4 : PRIVATE 생성자로 인스턴스를 생성할수 없게하라.

  • java.lang.math 나 java.util.array 같은 util 클래스는 인스턴스가 생성되도록 하면 안되므로 생성자를 piravte 로 선언하면 인스턴스가 생성되는것을 막을수 있다.
  • 기본적으로 생성자를 만들지 않아도 자바 컴파일러가 기본 생성자를 만들기 때문에 명시적으로 private 생성자를 선언해주어야한다.
  • 추상 클래스를 사용해서 인스턴스를 생성하지 못하도록 하는 방법을 사용하면 안된다. 추상 클래스를 상속해서 인스턴스를 생성 할 수 도 있고 클래스가 마치 상속을 위해 생성된거처럼 잘못 알게된다.
  • private 생성자를 만들면 subclass 를 만들수 없으므(컴파일 에러 발생)로 항상좋은건 아니다.
      public class UtilityClass {
        // 디폴트 생성자가 만들어지는것을 방지
        private UtilityClass() {
          // 혹시나 불러질 가능성 대비해서 (클래스 내부에서) 에러 발생
          throw new AssertionError();
        }
      }