如果这是一个普通的数组,我可以创建一个新的数组,然后使用arraycopy进行复制,但是泛型不允许我这样做。到目前为止,我想到的最好的方法是:
public void resize() {
T[] tempArray = Arrays.copyOf(myArray,myArray.length*3);
}
代码编译通过了,但在运行时出现了空指针异常。有人可以解释一下我哪里做错了吗?
您可以使用 Arrays.copyOf(myArray,myArray.length*3)
来进行复制。
我猜测 myArray[0]
是空的,所以 myArray[0].getClass()
抛出了 nullpointer 异常。
如果您需要组件的运行时类型,则可以使用 myArray.getClass().getComponentType()
。
两件事情:
如果你在 resize()
的第一行得到一个空指针,那可能是因为 myArray[0]
没有值。如果它是 null,你的 getClass()
方法就会失败。
你似乎没有给 myArray
赋值为 tempArray
,所以你很快就会遇到 ArrayIndexOutOfBounds 错误。
java.util.ArrayList
吗?它可以处理所有这些问题,而且不需要重新发明轮子。 - corsiKa