본문 바로가기
공부/JAVA

이펙티브자바 2장 규칙4. 객체생성을 막을 때는 private 생성자를 사용하라

by 미네밍 2021. 2. 17.

Effective Java 2장 객체의 생성과 삭제

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


정적메서드나 필드만 모은 클래스를 만드는 상황이 생길 수 있음.

  • 유틸성 클래스들(static 필드나 메서드만을 가지고 있는) ex) java.util.Math

보통 아무런 인자가 없는 default 생성자가 기본적으로 만들어지기 때문에, 클래스를 abstract 으로 선언하는 것은 소용 없음.

따라서, 객체생성을 막고 싶다면 private 생성자를 클래스에 생성해 객체를 생성하는 것을 방지해야 함.

private AClass(){
    throw new AssertionError();
}
  • 위와같이 private 생성자 안에 AssertionError를 예외처리 해줄 수 있음.

  • 해당 방법을 사용하면, 해당 클래스의 하위 클래스 또한 만들 수 없음.

    • 모든 생성자는 상위 클래스의 생성자를 명시적/묵시적으로 호출가능해야 하지만, 해당 클래스에는 호출 가능한 생성자가 없으므로

댓글