mbu*_*e13 11 java reflection instantiationexception
我有一个抽象的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();
}
Run Code Online (Sandbox Code Playgroud)
我有一个子类B,即
public class B extends A {
public B(Object o) {
super(o);
}
@Override
public int a() {
return 1;
}
@Override
public int b() {
return 2;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在执行以下代码:
Constructor c = B.class.getDeclaredConstructor(Object.class);
B b = (B) c.newInstance(new Object());
Run Code Online (Sandbox Code Playgroud)
并且在调用newInstance时获得InstantiationException,更具体地说:
java.lang.InstantiationException
at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我收到例外.我已经查看了一些其他类似的问题,并在调用超级构造函数或者父类的抽象性质的问题时看到了有关最终变量用法的事情,但我找不到为什么这种特殊情况抛出InstantiationException的明确答案.有任何想法吗?
Bre*_*ail 34
你确定B没有用abstract关键字定义吗?如果我将类声明为,我可以重现错误public abstract class B.
| 归档时间: |
|
| 查看次数: |
18370 次 |
| 最近记录: |