У меня есть абстрактный класс A, т. Е.
public abstract class A {
private final Object o;
public A(Object o) {
this.o = o;
}
public int a() {
return 0;
}
public abstract int b();
}
У меня есть подкласс B, т. Е.
public class B extends A {
public B(Object o) {
super(o);
}
@Override
public int a() {
return 1;
}
@Override
public int b() {
return 2;
}
}
Я выполняю следующий фрагмент кода:
Constructor c = B.class.getDeclaredConstructor(Object.class);
B b = (B) c.newInstance(new Object());
и получение исключения InstantiationException при вызове newInstance, более конкретно:
java.lang.InstantiationException
at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
Я не знаю, почему я получаю исключение.Я смотрел на некоторые другие подобные вопросы и видел вещи об использовании конечных переменных при вызове супер-конструктора или проблем с абстрактной природой родительского класса, но я не смог найти однозначного ответа на вопрос, почему именно в этой конкретной ситуации возникает исключение InstantiationException.Есть идеи?