가끔 정적 메서드와 정적 필드만을 담은 클래스가 필요할 경우가 있다.
유틸리티 클래스를 만들 때 주로 사용되는데, 이런 클래스들은 인스턴스화 되는 것을 되도록 막아야 한다.
자바에서는 생성자를 개발자가 작성하지 않아도, 내부적으로 생성자를 제공해준다.
그렇기에 이를 막기 위해서는 private로 생성자를 임의로 명시해주는 것이 좋다.
또한 이 방식은 상속을 불가능하게 만든다.
상속을 받으려면 해당 부모 클래스의 생성자를 호출할 수 있어야 하는데, private 선언을 통해 부모 클래스를 상속할 길이 막혀버린다.
public class Utility {
private Utility() {
throw new AssertionError();
}
}
결론
유틸리티 클래스들을 정적 메서드로 채우게 된다면 생성자는 private 로 막자. 단, 상속도 못 하게 되므로 주의!
'독후감 > Effective Java' 카테고리의 다른 글
6. 불필요한 객체 생성을 피하라 (0) | 2021.03.31 |
---|---|
5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2021.03.30 |
3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2021.03.18 |
2. 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2021.03.18 |
1. 생성자 대신 static factory method를 사용해보자 (0) | 2019.02.18 |