본문 바로가기
Effective Java

item 4

by irerin07 2023. 10. 4.
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