0
我需要通過類名創建類的實例,問題是這些類碰巧是子類(我已經有了一個父類的實例)。我記得class.forName()不能加載子類。在C++中,我可以使用從名稱到靜態函數指針的查找表來執行此操作,但是這種動態子類加載甚至可能在Java中加載?動態加載兒童班?
謝謝。
UPDATE
感謝您的回答,但看起來它並不適用於下面的示例工作:
AbStractTest.java
public abstract class AbstractTest{
AbstractTest(int i){}
class InnerTest
{
InnerTest(){
System.out.println("inner test class");
}
void test(){
System.out.println("inner test");
}
}
}
Test.java
public class Test extends AbstractTest
{
Test(int i){
super(i);
}
public static void main(String[] args) throws Exception
{
Test t = new Test(1);
AbstractTest.InnerTest innerTest = (AbstractTest.InnerTest)Class.forName("AbstractTest$InnerTest").getConstructor(AbstractTest.class).newInstance(t);
innerTest.test();
}
}
它結束了以下錯誤:
Exception in thread "main" java.lang.NoSuchMethodException: AbstractTest$InnerTest.<init>(AbstractTest)
at java.lang.Class.getConstructor0(Class.java:2678)
at java.lang.Class.getConstructor(Class.java:1629)
at Test.main(Test.java:9)
你確定'的Class.forName()`不工作? – CurtainDog 2011-01-21 05:32:37
你有哪一類孩子?你的內部類是否符合靜態修飾符? – adatapost 2011-01-21 05:41:03