如果這是一個常規數組,我可以創建一個新數組,然後執行arraycopy,但泛型不會讓我這樣做。我想出了迄今最好的事情是:調整陣列大小
public void resize() {
T[] tempArray = Arrays.copyOf(myArray,myArray.length*3);
}
它編譯,但在運行時,我得到一個空指針異常。任何人都可以解釋我做錯了什麼?
如果這是一個常規數組,我可以創建一個新數組,然後執行arraycopy,但泛型不會讓我這樣做。我想出了迄今最好的事情是:調整陣列大小
public void resize() {
T[] tempArray = Arrays.copyOf(myArray,myArray.length*3);
}
它編譯,但在運行時,我得到一個空指針異常。任何人都可以解釋我做錯了什麼?
可以使用Arrays.copyOf(myArray,myArray.length*3)
,使複印件
我的猜測是,myArray[0]
是空,因此myArray[0].getClass()
拋出
,如果你需要的組件的運行時類型可以使用空指針myArray.getClass().getComponentType()
兩個東西:
如果你得到null pointe r在第一行resize()
這可能是因爲你在myArray[0]
中沒有價值。如果那是空的,你的getClass()
會炸彈。
您似乎沒有指定myArray = tempArray
,因此您可能很快會遇到ArrayIndexOutOfBounds。
就是這樣,我嘗試手動添加一些東西到數組中,並修復它,所以問題在別處。並且很好地抓住#2,抱歉,我忘了將其粘貼到問題中。 – MatthewK
任何原因'java.util.ArrayList'不適合你?它可以處理所有這些以及更多,無需重新發明輪子。 – corsiKa
如果您要調整數組大小,您可能需要一個通用ArrayList。 – Cheeso
我很熟悉Arrays和ArrayLists,但我只是想了解泛型。感謝您的建議(實際上,我可能會使用ArrayList)。 – MatthewK