Rectangulo rect1 = new Rectangulo(0, 0, 100, 200);
Rectangulo rect2 = rect1;
como pueden notar rect 1 y rect2 hacen referencia o apuntan al mismo objeto, o en otras palabras, el mismo objeto tiene dos nombres. y esto es llamado aliasado (aliasing).
cuando dos variables son aliasadas, cualquier cambio hecho en una variable, afecta a la otra.
Para evitar este efecto en java lo único que hay que hacer es utilizar el método clone() heredado de la super clase, lo cual permitirá hacer una copia del objeto y no hacer referencia al mismo. Ejemplo.
public class Test { public static void main(String[] args){ int[] x = {1,2,3};int[] y = x;x[0] = 30;System.out.println(y[0]);} }
La salida del ejemplo de arriba es: 30
esto se debe a que se hace referencia al mismo objeto cuando se cambia el indice 0 de la variable x.
public class Test { public static void main(String[] args){ int[] x = {1,2,3};int[] y = x.clone();x[0] = 30;System.out.println(y[0]);} }
La salida de este ejemplo es: 1
porque con el método clone ya se puede eliminar el aliasing y se trabaja con dos objetos independientes el uno del otro

porque empezamos hablando de aliasing en objetos y pones un ejemplo con un array?
ResponderBorrar