调整数组大小

时间:2011-09-05 23:41:19

标签: java arrays generics

如果这是一个常规数组,我可以创建一个新数组,然后进行arraycopy,但是泛型不会让我这样做。到目前为止,我提出的最好的事情是:

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

它编译,但在运行时,我得到一个空指针异常。谁能解释我做错了什么?

2 个答案:

答案 0 :(得分:6)

您可以使用Arrays.copyOf(myArray,myArray.length*3)制作副本

我的猜测是myArray[0]为空,因此myArray[0].getClass()会抛出nullpointer

如果您需要组件的运行时类型,可以使用myArray.getClass().getComponentType()

答案 1 :(得分:0)

两件事:

  1. 如果您在resize()的第一行获得空指针,可能是因为myArray[0]中没有值。如果为空,则getClass()会炸弹。

  2. 您似乎没有分配myArray = tempArray,因此很快就会遇到ArrayIndexOutOfBounds。