2011-12-22 35 views
0

我應該如何使用空的構造函數初始化一個類的數組?我應該如何用Java中的默認(無參數)構造函數初始化一個類的數組?

我可以看到,如果我用的構造,我會做它像這樣 -

MyClass[] myArray = new MyClass[] { 
    new MyClass(1), 
    new MyClass(2), 
    new MyClass(3) 
}; 

但隨着一個空的構造我不知道該怎麼辦。

MyClass[] myArray = new MyClass[] { 
    new MyClass(), 
    new MyClass(), 
    new MyClass() 
}; 

這就是我目前的情況,但它似乎非常低效 - 有沒有更好的方法?

(我把它叫做MyClass的/ myarray的在例如可讀性 - 不要擔心,我使用明智的變量名!)

+0

只有三個成員,它並不是非常低效。你預計會有多少人? – Alnitak 2011-12-22 21:49:18

+0

它如何無效?你的意思是不願意編程,因爲你必須輸入所有'新的MyClass',或者你認爲它在運行時會做很多工作嗎? – 2011-12-22 21:50:08

+0

你需要有三個不同的班級實例嗎? – JustinKSU 2011-12-22 21:52:11

回答

6

你要麼把它們寫出來一次一個,或者你必須使用循環:

MyClass[] myArray = new MyClass[n]; 
for (int i = 0; i < myArray.length; ++i) { 
    myArray[i] = new MyClass(); 
} 
0
public static <T> T[] getArray(final Class<? extends T> memberclass, final int numberOfItems) { 

    final T[] array = new T[numberOfItems]; 
    final Constructor constr = memberclass.getConstructor(null); 
    for (int index = 0; index < numberOfItems; index++) { 
     array[index] = constr.newInstance(null); 
    } 

    return array; 
} 

這一個粗略草案,您可以使用用於該目的的通用方法。當然,我跳過了所有的異常處理,所以這個方法在現實中會更臃腫一些。

相關問題