InstantiationException — newInstance()로 만들 수 없는 클래스를 만들려 할 때
InstantiationException — newInstance()로 만들 수 없는 클래스를 만들려 할 때
InstantiationException은 애플리케이션이 Class.newInstance() 메서드로 클래스의 인스턴스를 만들려 했는데, 그 클래스 객체를 인스턴스화할 수 없는 경우에 던져지는 예외예요.
본문
인스턴스화가 실패하는 이유는 다양해요. 예를 들어:
- 클래스 객체가 추상 클래스, 인터페이스, 배열 클래스, 원시 타입, 또는
void를 나타내는 경우 - 클래스에 인자 없는(no-arg) 생성자가 없는 경우
이런 조건에 걸리면 이 예외가 나와요. InstantiationError가 비호환 클래스 변경으로 인한 링크 에러라면, 이 예외는 리플렉션으로 newInstance()를 부르는 과정에서 생기는 checked exception이에요.
상속 구조는 다음과 같아요.
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.ReflectiveOperationException
java.lang.InstantiationException
ReflectiveOperationException의 하위 클래스라서, 리플렉션 예외를 한 번에 처리하고 싶을 때 그 부모 타입으로 잡을 수 있어요.
생성자
InstantiationException()— 상세 메시지 없이 생성해요.InstantiationException(String s)— 지정된 상세 메시지로 생성해요.