1. 정적 메서드와 정적 필드만 담은 클래스 생성
정적 메서드와 정적 필드만 담을 클래스 또는 final 클래스와 관련한 메서드들을 모아놓을 경우가있다. 정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한게 아니기 때문에 private 생성자를 사용하면 된다.
예를들면 java.util.Collections 처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드를 모아놓는 경우 private 생성자를 사용한다.
private 생성자에 이런 주석을 담으면 의도를 좀 더 명확하게 할 수 있다.
//기본 생성자가 만들어지는 것을 막는다.(인스턴스화 방지용)
private Collections() {
}
2.정리
- 클래스의 인스턴스화를 막으려면 private 생성자를 추가하면 된다.
- private 생성자의 경우 상속을 불가능하게 하는 효과도 있다.
REFERENCE
- 조슈아 블로크, Effective Java
'Effective Java' 카테고리의 다른 글
[Effective Java] 아이템6 불필요한 객체 생성을 피하라 (0) | 2021.01.16 |
---|---|
[Effective Java] 아이템5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2021.01.14 |
[Effective Java] 아이템3 private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2021.01.13 |
[Effective Java] 아이템2 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2021.01.12 |
[Effective Java] 아이템1 생성자 대신 정적 팩터리 메서드를 고려하라 (0) | 2021.01.11 |