我遇到了Java和泛型類的問題。
考慮下面的代碼
在運行時生成新類的實例失敗
public class A {
public void n() {
System.out.println("In A");
}
}
public class B extends A {
@Override
public void n() {
System.out.println("In B");
super.n();
}
}
public class C {
public A m_a;
public <T extends A> C(Class<T> a) {
try {
m_a = a.newInstance();
}
catch(Exception e) {
e.printStackTrace();
}
}
public void print(){ m_a.n(); };
}
我嘗試實例C類的對象如下
C c = new C(B.class);
但出現以下錯誤:
java.lang.InstantiationException: testdbvsfile.Main$B
at java.lang.Class.newInstance(Unknown Source)
at testdbvsfile.Main$C.<init>(Main.java:63)
at testdbvsfile.Main.main(Main.java:76)
Caused by: java.lang.NoSuchMethodException: testdbvsfile.Main$B.<init>()
at java.lang.Class.getConstructor0(Unknown Source)<br>
... 3 more
我怎樣才能讓這行得通?
感謝您的幫助。
BTW:我使用的是jre1.8.0_65
因此提供一個MCVE的重要性。 –