아이템4. 인스턴스화를 막으려거든 private 생성자를 사용하라
2021-04-11 00:00:00 # Effective_Java
  • 잘 사용하지 않는 방식이지만 나름 쓰임새가 있다.
  • 추상 클래스는 상속하는 하위 클래스를 만들어 인스턴스화 하면 만들어진다.

용도

  • java.lang.Math와 java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서드들을 모아놓을 수 있다.
  • java.util.Collections처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(혹은 팩터리)를 모아놓을 수 있다. (java 8부터는 interface에 선언 가능)
  • final 클래스와 관련한 메서드들을 모아놓을 때도 사용한다.
  • private 생성자 안에 에러를 throw 하면, 클래스 안에서 실수로라도 생성자를 호출하지 않도록 해준다.
  • 상속을 불가능하게 해준다.

책 예시

1
2
3
4
5
6
public class UtilityClass {
// 기본 생성자가 만들어지는 것을 막는다.(인스턴스화 방지)
private UtilityClass() {
throw new AssertionError();
}
}