Foros del Web » Programación para mayores de 30 ;) » Java »

ArrayList por referencia

Estas en el tema de ArrayList por referencia en el foro de Java en Foros del Web. Hola, tengo entendido que los tipos no primitivos al pasarlos como parametro en una función y modificarlos en su interior, esos cambios se verían fuera ...
  #1 (permalink)  
Antiguo 16/06/2011, 03:27
 
Fecha de Ingreso: agosto-2010
Mensajes: 28
Antigüedad: 13 años, 8 meses
Puntos: 0
ArrayList por referencia

Hola, tengo entendido que los tipos no primitivos al pasarlos como parametro en una función y modificarlos en su interior, esos cambios se verían fuera de la función. Pues yo no consigo hacerlo, a ver si me podéis echar una mano.
Voy a simplificar mi código para que se entienda rápidamente:

ArrayList<Objecto> array = null;

public boolean getTotales(int opcion, ArrayList<Objecto> array){
boolean ok = true;
array = funcionQueRellenaArrayList();
if(array es nulo){ok = false);
return ok;
}
// codigo que muestra array

Cuando entra en getTotales y ejecuta funcionQueRellanArray, el array si que se rellena correctamente pues no entra en el if. pero claro ese array es el que he pasado como parámetro en getTotales cuando salgo de él y ejecuto el código para mostrar el array me da null pointer exception. Es VITAL que mi función devuelva un boolean, así que NO puedo hacer un return del array.

Gracias y espero que se entienda
  #2 (permalink)  
Antiguo 16/06/2011, 07:32
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: ArrayList por referencia

Tienes un error de concepto.

Cita:
array = funcionQueRellenaArrayList();
No sé exactamente cómo es funcionQueRellenaArrayList(), pero por tu problema y teniendo en cuenta que no le pasas como parámetro un arraylist, parece que lo que estás haciendo es generar un nuevo arraylist que referencias con array.

La referencia arrayloquesea que pasas como parámetro al llamar al método y la referencia array dentro de funcionQueRellenaArrayList(), no son la misma, por lo que al salir de él, la referencia arrayloquesea del método que llama a getTotales(), seguirá apuntando a un arraylist vacío.

Necesitas que funcionQueRellenaArrayList() actúe sobre el objeto al que apunta array y arrayloquesea, no generar uno nuevo.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: arraylist, referencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:36.