Como evitar el aliasado de Java (Aliasing)

Recuerdas cuando haces una asignación a un objeto, estás asignando una referencia a un objeto. Es posible tener múltiples variables que hagan referencia al mismo objeto. por ejemplo, este código:

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



AliExpress.com Product - Xiaomi Mi Notebook Pro 15.6 inch 16:9 1920*1080 IPS 256GB SSD Windows 10 Intel Core i5/i7 Quad Core Laptop Fingerprint Dual WiFi

Comentarios

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

    ResponderBorrar

Publicar un comentario