2011-09-05 18 views
5

Si esta fuera una matriz regular, podría crear una nueva matriz y luego hacer una matriz, pero los genéricos no me permitirán hacerlo. El mejor que he encontrado hasta el momento es:Cambiar el tamaño de una matriz

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

Compila, pero en tiempo de ejecución, me sale una excepción de puntero nulo. ¿Alguien puede explicar lo que estoy haciendo mal?

+2

Cualquier razón 'java.util.ArrayList' no funciona para usted? Maneja todo esto y más, no hay necesidad de reinventar la rueda. – corsiKa

+0

Si está redimensionando matrices, probablemente desee una ArrayList genérica. – Cheeso

+0

Estoy familiarizado con Arrays y ArrayLists, pero solo estoy tratando de aprender sobre los genéricos. Gracias por la sugerencia (en la práctica, ArrayList es lo que probablemente usaría). – MatthewK

Respuesta

6

puede utilizar Arrays.copyOf(myArray,myArray.length*3) para hacer la copia

mi suposición es que myArray[0] es nulo por lo myArray[0].getClass() los tiros NullPointer

si necesita el tipo de tiempo de ejecución de los componentes que se pueden utilizar myArray.getClass().getComponentType()

0

Dos cosas:

  1. Si obtiene una punta nula r en la primera línea de resize() es probable que sea porque no tiene ningún valor en myArray[0]. Si es nulo, su getClass() bombardeará.

  2. Parece que no está asignando myArray = tempArray, por lo que probablemente se encontrará con un ArrayIndexOutOfBounds pronto.

+0

Eso fue todo, traté de agregar manualmente algunas cosas a la matriz y eso lo solucionó, por lo que el problema está en otra parte. Y una buena captura en el # 2, lo siento, olvidé pegar eso en la pregunta. – MatthewK

Cuestiones relacionadas