Dev Book Review/Effective Java
[Effective Java] item4. 인스턴스화를 막으려거든 private 생성자를 사용하라
쟈 미
2020. 4. 15. 01:13
728x90
1. 정적 메서드와 정적 필드만을 담을 클래스의 쓰임새
- 기본타입 값이나 배열 관련 메서드를 모아 둘 때 (java.lang.Math, java.util.Arrays)
- 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(팩터리)를 모아둘 때 (java.util.Collections)
- final 클래스와 관련한 메서드
2. 인스턴스화를 막는 방법.
정적 멤버만 담을 때는 인스턴스로 만들어 쓰려고 설계한게 아님.
문제 ) 생성자를 명시하지 않을 때 자동으로 기본 생성자가 만들어짐 (인스턴스화가 가능해진다)
해결 ) private 생성자를 추가해서 클래스의 인스턴스 화를 막을 수 있다
- 상속을 불가능하게 하는 효과 (하위가 상위 생성자 접근을 할 수 없다.)
- 직관적이지 않을 수 있으니 적절한 주석을 달자
public class UtilityClass {
// 기본 생성자가 만들어지는 것을 막는다(인스턴스화 방지용).
private UtilityClass() {
throw new AssertionError();
}
// 나머지 코드는 생략
}