InstantiationError — 추상 클래스나 인터페이스를 new로 만들려 할 때
InstantiationError — 추상 클래스나 인터페이스를 new로 만들려 할 때
InstantiationError는 애플리케이션이 자바의 new 연산자로 추상 클래스(abstract class)나 인터페이스(interface) 를 인스턴스화하려 할 때 던져지는 에러예요.
본문
추상 클래스나 인터페이스는 본질적으로 인스턴스를 직접 만들 수 없는 타입이에요. 평소에는 컴파일러가 이런 시도를 막아 주지만, 클래스 정의가 비호환적으로 바뀌어 런타임에서야 이 문제가 드러나는 경우가 있어요. 예를 들어 어떤 클래스가 원래 구체 클래스였다가 추상 클래스로 바뀌었는데, 옛 바이너리가 그걸 그대로 new 하려 하면 이 에러가 나요.
상속 구조는 다음과 같아요.
java.lang.Object
java.lang.Throwable
java.lang.Error
java.lang.LinkageError
java.lang.IncompatibleClassChangeError
java.lang.InstantiationError
IncompatibleClassChangeError의 하위 클래스라는 점에서 알 수 있듯이, 이 에러도 "클래스 정의가 바뀌어 생긴 링크 문제" 계열이에요.
생성자
InstantiationError()— 상세 메시지 없이 생성해요.InstantiationError(String s)— 지정된 상세 메시지로 생성해요.