Java – instantiationexception calls a class on newinstance for simple reflection?
•
Java
I have an abstract class A, which is
public abstract class A { private final Object o; public A(Object o) { this.o = o; } public int a() { return 0; } public abstract int b(); }
I have a subclass B, namely
public class B extends A { public B(Object o) { super(o); } @Override public int a() { return 1; } @Override public int b() { return 2; } }
I am executing the following code:
Constructor c = B.class.getDeclaredConstructor(Object.class); B b = (B) c.newInstance(new Object());
And the call to newinstance gets an instantiationexception, more specifically:
java.lang.InstantiationException at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30) at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
I don't know why I received an exception I have looked at some other similar questions, and used the final variable when calling the super constructor or saw the abstract properties of the parent class, but I can't find the exact answer to why this special case caused an instantiationexception Any ideas?
Solution
Are you sure that B does not define abstract keywords? If I declare the class as public abstract class B, I can reproduce the error
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码