Java 调整数组大小
如果这是一个常规数组,我可以创建一个新数组,然后进行arraycopy,但泛型不允许我这样做。到目前为止,我想到的最好的办法是: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
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,对不起,我忘了把它粘贴到问题中。