2011-09-05 133 views
5

如果這是一個常規數組,我可以創建一個新數組,然後執行arraycopy,但泛型不會讓我這樣做。我想出了迄今最好的事情是:調整陣列大小

public void resize() { 
    T[] tempArray = Arrays.copyOf(myArray,myArray.length*3); 
} 

它編譯,但在運行時,我得到一個空指針異常。任何人都可以解釋我做錯了什麼?

+2

任何原因'java.util.ArrayList'不適合你?它可以處理所有這些以及更多,無需重新發明輪子。 – corsiKa

+0

如果您要調整數組大小,您可能需要一個通用ArrayList。 – Cheeso

+0

我很熟悉Arrays和ArrayLists,但我只是想了解泛型。感謝您的建議(實際上,我可能會使用ArrayList)。 – MatthewK

回答

6

可以使用Arrays.copyOf(myArray,myArray.length*3),使複印件

我的猜測是,myArray[0]是空,因此myArray[0].getClass()拋出

,如果你需要的組件的運行時類型可以使用空指針myArray.getClass().getComponentType()

0

兩個東西:

  1. 如果你得到null pointe r在第一行resize()這可能是因爲你在myArray[0]中沒有價值。如果那是空的,你的getClass()會炸彈。

  2. 您似乎沒有指定myArray = tempArray,因此您可能很快會遇到ArrayIndexOutOfBounds。

+0

就是這樣,我嘗試手動添加一些東西到數組中,並修復它,所以問題在別處。並且很好地抓住#2,抱歉,我忘了將其粘貼到問題中。 – MatthewK