Как реализовать интерфейс Cloneable

Когда объект копируется на другой с помощью оператора присваивания, копируются только ссылки объекта. Такое изменение в одном объекте отражает в другой.

Java использовать Clone () класса объекта, чтобы скопировать содержание одного объекта к другому. Проблема прибудет если класс, который должен быть скопирован также содержит ссылку на другой объект.

Классы могут Cloneable реализующий интерфейс перекрывает Clone () метод класса объекта.

Следующий пример покажет, порядок осуществления Cloneable интерфейса.


public class CloneExp implements Cloneable {



  private String name;

  private String address;

  private int age;

  private Department depart;

  public CloneExp(){

    

  }

  public CloneExp(String aName, int aAge, Department aDepart) {



    this.name = aName;

    this.age = aAge;

    this.depart = aDepart;

  }



  protected Object clone() throws CloneNotSupportedException {



    CloneExp clone=(CloneExp)super.clone();



    // make the shallow copy of the object of type Department

    clone.depart=(Department)depart.clone();

    return clone;



  }

  public static void main(String[] args) {



    CloneExp ce=new CloneExp();



    try {

      // make deep copy of the object of type CloneExp

      CloneExp cloned=(CloneExp)ce.clone();

    catch (CloneNotSupportedException e) {

      e.printStackTrace();

    }

    

  }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>