Study
Static 클래스의 noninstantiability
부산대보금자리
2022. 11. 8. 15:59
Static 메소드와 Static 필드르 모아둔 클래스를 만든 경우 목적은 분명하다.
이는 해당 클래스를 abstract로 만들어도 상속 받을 수 있으므로 인스턴스를 만드는 걸 막을 수 없다.
단순히 아무런 생성자를 만들지 않는다 하더라도 컴파일러가 기본적으로 아무 인자가 없는 public 생성자를 만들어 주기 때문에 인스턴스를 만들 수 있다.
따라서 명시적으로 private 생성자를 추가하는 것이 필요하다.
// Noninstantiable utility class
public class UtilityClass {
// Suppress default constructor for noninstantiability
private UtilityClass() {
throw new AssertionError();
}
}