Duda referencia de objetos java

jose luis
17 de Abril del 2006
Hola a todos, tengo una duda con relacion a como referenciar un objeto usando java, y para explicarme mejor les muestro este codigo:
class Clase1{
public void metodo(){
System.out.println("soy un metodo de la clase 1");
}
}

public class HolaMundo{
public static void main(String args[]){
Clase1 c1=new Clase1();
Clase1 c2;
c2=c1;
c2=null;
c1.metodo();

}
}
segun yo a c2 le asigno la referencia de c1, y si le ago cambios a c2 entonces se las haria a c1, pero no es asi, ¿como le puedo hacer para asignarle la referencia al objeto?.
De antemano les agradesco a todos y espero y puedan ayudarme.
saludos.

jasanrio
17 de Abril del 2006
Eso es por la liena c2=null , quitala y veras que si haces cambios en c2 , ocurren en c1 , y si no mira este ejemplo :

public class Referencia {
public int i;

public static void main(String args[])
{
Referencia rf1=new Referencia();
rf1.i=20;

System.out.println("I="+rf1.i);

Referencia rf2=rf1;
rf2.i=40;

System.out.println("I="+rf1.i);

}

}

Y saca en pantalla :

I=20
I=40


Espero que esto te ayude

Saludos


jose luis
17 de Abril del 2006
Hola,gracias por contestar tan rapitamente y por tomarte el tiempo en desarrollar un ejemplo,yo me imaginaba que por ejemplo, si a rf2 le asignaba null, tambien quedaria asignado para rf1 y entonces vendria el recolector para liberar recursos, pero acabo de leer que no es asi como actua, dado que rf1 aun queda apuntando a una direccion.porfavor corriganme si le entendi mal.
saludos

eric draven
17 de Abril del 2006
Efectivamente, tu al poner c2=null; lo que estabas haciendo es quitandole la referencia que tenia, no poniendo el objeto a null, ya que como has dicho c1 aun seguia referenciando a ese objeto.