abk.util
Interface ICopyable<T extends ICopyable<?>>

Type Parameters:
T - Tipo de dato desde el que copiamos los valores.

public interface ICopyable<T extends ICopyable<?>>

Establece el valor del objeto actual como una copia profunda de otro objeto.

Su uso difiere de Object.clone() en que no implica la creación de ninguna instancia, si no la inicialización de una con los valores de otra. Por ejemplo:

 class MiClase implements ICopyable<MiClase>
 {
    private MiClase copiable;
    private String name;
 
    @Override
    MiClase
    copy(MiClase other)
    {
       this.name = other.name;
       if (other.copiable != null)
       {
          this.copiable = new MiClase().copy(other.copiable);
       }
    }
 }
 
También puede usarse para unificar la implementación del constructor por copia, y la de implementar Cloneable:
 class MiClase implements ICopyable<MiClase>, Cloneable
 {
 
    // Constructor de copia
    public MiClase(MiClase other)
    {
       this.copy(other);
    }

    @Override
    public
    MiClase clone()
    {
       MiClase clon;
       try
       {
          clon = (MiClase)super.clone();
          clon.copy(this);
       }
       catch (CloneNotSupportedException e)
       {
          throw new UnsupportedOperationException(e);
       }
       return clon;
    }
 }
 


Method Summary
 ICopyable<T> copy(T other)
          Establece el valor del objeto actual como una copia profunda de otro objeto.
 

Method Detail

copy

ICopyable<T> copy(T other)
Establece el valor del objeto actual como una copia profunda de otro objeto.

Parameters:
other - Objeto del que copiamos las propiedades.
Returns:
Devuelve la propia instancia invocada.
Throws:
NullPointerException - si other es nulo.
UnsupportedOperationException - si other no ni puede completarse la operación de copia debido a que alguno de los valores de la propiedades de other no es admitido.


Copyright © 2024. All rights reserved.