Reputation: 53
If this were a regular array, I could just create a new array and then do arraycopy, but generics won't let me do that. The best thing I've come up with so far is:
public void resize() {
T[] tempArray = Arrays.copyOf(myArray,myArray.length*3);
}
It compiles, but at run time, I get a null pointer exception. Can anyone explain what I'm doing wrong?
Upvotes: 5
Views: 6579
Reputation: 48196
you can use Arrays.copyOf(myArray,myArray.length*3)
to make the copy
my guess is that myArray[0]
is null so myArray[0].getClass()
throws the nullpointer
if you need the runtime type of the components you can use myArray.getClass().getComponentType()
Upvotes: 6
Reputation: 82559
Two things:
If you're getting a null pointer on the first line of resize()
it's probably because you have no value in myArray[0]
. If that is null, your getClass()
will bomb.
You don't appear to be assigning myArray = tempArray
so you'll probably run into an ArrayIndexOutOfBounds soon.
Upvotes: 0