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();
    }
}