728x90
간혹 정적 메서드만 담은 유틸리티 클래스처럼 인스턴스화가 필요없는 클래스가 발생 할 수도 있다.
이들의 인스턴스화를 막기 위해 다음과 같이 추상 클래스로 만들 수 있겠지만
public abstract class UtilityClass {
}
이런 추상 클래스로는 인스턴스화를 막을 수 없다.
그 이유는 간단한데 만약 저 추상 클래스를 상속받는 하위 클래스가 있는 경우, 자동적으로 인스턴스가 만들어진다.
오히려 abstract 키워드 때문에 상속하여 사용하라는 듯한 오해를 불러 일으킬 수 있다.
이런 경우 private 생성자를 추가하여 인스턴스 생성을 막을 수 있다.
public class UtilityClass {
private UtilityClass() {
throw new AssertionError();
}
}
728x90
'Effective Java' 카테고리의 다른 글
item 3 (0) | 2023.09.21 |
---|---|
item 2 (0) | 2023.09.21 |
item 1 (0) | 2023.09.09 |