2012-11-25 40 views
1

所以,我有一個類數組:爪哇 - 返回一個類(陣列)的實例

Class<?>[] classes; 

我填充,在我的構造函數的類:

public Sample (Class<?>[] classes){ 
this.classes = classes; 
} 

然後,我有一個方法返回根據其索引的一個類的實例:

public Object getInstanceOfClassWithIndex(int index){ 
    return new classes[index]; 
} 

不幸的是,不工作,導致compil e錯誤。謝謝。任何幫助,將不勝感激。

+3

如果它是一個編譯錯誤,他怎麼能有堆棧跟蹤? – Jack

回答

2

您應該調用newInstance()方法在給定索引處創建類的對象。

return classes[index].newInstance(); 
+0

很酷,感謝您的幫助! – lorraine

1

問題是,你在這裏不必要new

return new classes[index]; 

嘗試:

return classes[index]; 

記住,這個返回Class<T>而不是T一個新的實例。要生成它,你需要通過newInstance()使用反射。

1

替換:

public Object getInstanceOfClassWithIndex(int index){ 
    return new classes[index]; 
} 

有:

public Object getInstanceOfClassWithIndex(int index){ 
    return classes[index]; 
} 

你不是創建一個新的實例,所以沒有new是必需的。