如果这是一个常规数组,我可以创建一个新数组,然后进行arraycopy,但是泛型不会让我这样做。到目前为止,我提出的最好的事情是:
public void resize() {
T[] tempArray = Arrays.copyOf(myArray,myArray.length*3);
}
它编译,但在运行时,我得到一个空指针异常。谁能解释我做错了什么?
答案 0 :(得分:6)
您可以使用Arrays.copyOf(myArray,myArray.length*3)
制作副本
我的猜测是myArray[0]
为空,因此myArray[0].getClass()
会抛出nullpointer
如果您需要组件的运行时类型,可以使用myArray.getClass().getComponentType()
答案 1 :(得分:0)
两件事:
如果您在resize()
的第一行获得空指针,可能是因为myArray[0]
中没有值。如果为空,则getClass()
会炸弹。
您似乎没有分配myArray = tempArray
,因此很快就会遇到ArrayIndexOutOfBounds。