Java 调整数组大小

Java 调整数组大小,java,arrays,generics,Java,Arrays,Generics,如果这是一个常规数组,我可以创建一个新数组,然后进行arraycopy,但泛型不允许我这样做。到目前为止,我想到的最好的办法是: public void resize() { T[] tempArray = Arrays.copyOf(myArray,myArray.length*3); } 它可以编译,但在运行时,我得到一个空指针异常。有人能解释一下我做错了什么吗?你可以使用Arrays.copyOf(myArray,myArray.length*3)制作副本 我猜myArray[0

如果这是一个常规数组,我可以创建一个新数组,然后进行arraycopy,但泛型不允许我这样做。到目前为止,我想到的最好的办法是:

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

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

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

我猜
myArray[0]
是空的,因此
myArray[0].getClass()会抛出空指针

如果您需要组件的运行时类型,您可以使用两件事:

  • 如果在
    resize()
    的第一行得到一个空指针,可能是因为在
    myArray[0]
    中没有值。如果该值为空,则
    getClass()
    将爆炸

  • 您似乎没有分配
    myArray=tempArray
    ,因此可能很快就会遇到ArrayIndexOutOfBounds


  • 有任何原因
    java.util.ArrayList
    不适合您吗?它可以处理所有这些以及更多的事情,不需要重新发明轮子。如果你要调整数组的大小,你可能需要一个通用的ArrayList。我熟悉数组和ArrayList,但我只是想了解一下泛型。感谢您的建议(实际上,我可能会使用ArrayList)。就是这样,我尝试手动向数组添加一些内容,并修复了它,所以问题出在别处。很好地理解了#2,对不起,我忘了把它粘贴到问题中。