Parametros

JP LOPEZ
19 de Septiembre del 2005
A una funcion le estoy pasando un Object, en la funcion lo modifico, pero cundo sale de la funcion sigue teniendo el mismo, valor, es como si el pasage fuera por valor.......pero supuestamente en java el pasage de objetos es siempre por referencia, cual puede ser el problema???

chuidiang
19 de Septiembre del 2005
Hola:

Si haces esto

void metodo (Clase a)
{
a=new Clase();
}

cuando salgas, no se ha modificado nada. Para que se modifique, tienes que darle valores a lo que tenga a

void metodo (Clase a)
{
a.tomaDato(valor);
}

Así si se modifica.

Te cuento un par de "mentiras" de java.

Java no tiene punteros y todo se pasa por referencia. La realidad es que java se entiende mejor si dices que todo son punteros y se pasan por valor. En el ejemplo anterior, si llamas a

Clase b = new Clase();
metodo (b)

b y a son punteros que apuntan a una instancia de Clase, la que sea, pero a y b son punteros distintos.
Si haces apuntar a a otro sitio (con a=new Clase()), b sigue apuntando al objeto original y por tanto no se modifica.
Si haces a.tomaDato(valor), entonces el objeto al que apunta b también se modifica.

Se bueno.