¿Cómo clon de Java () realmente utilizar copia superficial?

Giorgi Lagidze:

Sé que puede ser ya pidió, pero mi pregunta es algo diferente. He buscado y sé java método de object.clone()copia usos poco profunda, que significa copiar referencias y no los objetos reales. Digamos que tengo un perro Clase

 Class Dog{
     public Dog(String name, DogTail tail, DogEar ear){
          this.name = name;
          this.tail = tail;
          this.ear  = ear;   
     } 
} 
DogTail t = new DogTail(); 
DogEar ear = new DogEar(); 
Dog dog1 = new Dog("good", t,ear);

Digamos que quiero obtener una copia de dog1.

Perro dognew = dog1.clone ();

Si este clone()método utiliza copia superficial, que significa copiar referencias. Así que si cambio de t objeto creado anteriormente o método oreja, que va a cambiar en el objeto dognew o viceversa. ¿Cómo es esta clonación bueno? Esta pregunta nació porque alguien dijo que la creación de un objeto enorme grande es peor que la clonación, como guarde el rendimiento durante el uso de clone()método.

FunctionR:

La versión predeterminada del clone()método crea la copia superficial de un objeto.

La copia superficial de un objeto tendrá copia exacta de todos los campos del objeto original. Si el objeto original tiene referencias a otros objetos como los campos, a continuación, sólo las referencias de esos objetos se copian en objeto clon, copia de esos objetos no se crean. Eso significa que los cambios realizados en los objetos a través de objetos clon se reflejarán en el objeto original o viceversa.

Para crear una copia profunda de un objeto, se puede anular el clone()método.

protected Object clone() throws CloneNotSupportedException
{
    DogTail tail = (DogTail) this.tail.clone();

    Dog dog = (Dog) super.clone();

    dog.tail = tail;

    return dog;
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=213534&siteId=1
Recomendado
Clasificación