MatthewK
MatthewK

Reputation: 53

Resizing an Array

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

Answers (2)

ratchet freak
ratchet freak

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

corsiKa
corsiKa

Reputation: 82559

Two things:

  1. 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.

  2. You don't appear to be assigning myArray = tempArray so you'll probably run into an ArrayIndexOutOfBounds soon.

Upvotes: 0

Related Questions