본문 바로가기
Effective Java

[Effective Java] 아이템4 인스턴스화를 막으려거든 private 생성자를 사용하라

by byeongoo 2021. 1. 13.

1. 정적 메서드와 정적 필드만 담은 클래스 생성

정적 메서드와 정적 필드만 담을 클래스 또는 final 클래스와 관련한 메서드들을 모아놓을 경우가있다. 정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한게 아니기 때문에 private 생성자를 사용하면 된다.

 

예를들면 java.util.Collections 처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드를 모아놓는 경우 private 생성자를 사용한다.

private 생성자에 이런 주석을 담으면 의도를 좀 더 명확하게 할 수 있다.

//기본 생성자가 만들어지는 것을  막는다.(인스턴스화 방지용)
private Collections() {
}

2.정리

  • 클래스의 인스턴스화를 막으려면 private 생성자를 추가하면 된다.
  • private 생성자의 경우 상속을 불가능하게 하는 효과도 있다.

REFERENCE

  • 조슈아 블로크, Effective Java