728x90
1. 정적 메서드와 정적 필드만을 담을 클래스의 쓰임새
- 기본타입 값이나 배열 관련 메서드를 모아 둘 때 (java.lang.Math, java.util.Arrays)
- 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(팩터리)를 모아둘 때 (java.util.Collections)
- final 클래스와 관련한 메서드
2. 인스턴스화를 막는 방법.
정적 멤버만 담을 때는 인스턴스로 만들어 쓰려고 설계한게 아님.
문제 ) 생성자를 명시하지 않을 때 자동으로 기본 생성자가 만들어짐 (인스턴스화가 가능해진다)
해결 ) private 생성자를 추가해서 클래스의 인스턴스 화를 막을 수 있다
- 상속을 불가능하게 하는 효과 (하위가 상위 생성자 접근을 할 수 없다.)
- 직관적이지 않을 수 있으니 적절한 주석을 달자
public class UtilityClass {
// 기본 생성자가 만들어지는 것을 막는다(인스턴스화 방지용).
private UtilityClass() {
throw new AssertionError();
}
// 나머지 코드는 생략
}
'Dev Book Review > Effective Java' 카테고리의 다른 글
[Effective Java] item6. 불필요한 객체 생성을 피하라 (0) | 2020.04.15 |
---|---|
[Effective Java] item5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2020.04.15 |
[Effective Java] item3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2020.04.15 |
[Effective Java] item2. 생성자에 매개변수가 많다면 빌더를 고려해라 (0) | 2020.04.15 |
[Effective Java] item1. 생성자 대신 정적 팩터리 메서드를 고려하라 (0) | 2020.04.15 |