Static 메소드와 Static 필드르 모아둔 클래스를 만든 경우 목적은 분명하다.
이는 해당 클래스를 abstract로 만들어도 상속 받을 수 있으므로 인스턴스를 만드는 걸 막을 수 없다.
단순히 아무런 생성자를 만들지 않는다 하더라도 컴파일러가 기본적으로 아무 인자가 없는 public 생성자를 만들어 주기 때문에 인스턴스를 만들 수 있다.
따라서 명시적으로 private 생성자를 추가하는 것이 필요하다.
// Noninstantiable utility class
public class UtilityClass {
// Suppress default constructor for noninstantiability
private UtilityClass() {
throw new AssertionError();
}
}
'Study' 카테고리의 다른 글
리소스의 의존성 주입 (0) | 2022.11.22 |
---|---|
싱글톤 객체 생성 (0) | 2022.11.08 |
생성자 매개변수가 많은 경우에 빌더 사용을 고려 (0) | 2022.11.03 |
생성자 대신 Static 팩토리 메소드의 사용 (0) | 2022.11.02 |
정보처리기사 5과목 오답 (0) | 2022.02.23 |