Использование клонов методом клонирования объекты

Основанием для принятия локальной копии объекта Если ты собирается изменить этот объект и вы не хотите изменить абонентов объект. Если вы решите, что вы хотите сделать локальную копию, вы просто используете клонов () для выполнения операции. Например, стандартная библиотека класс ArrayList перекрывает Clone (), так что мы можем назвать клоном () для ArrayList:


import java.util.*;



class Int {

  

  private int i;

  

  public Int(int ii) { i = ii; }

  

  public void increment() { i++; }

  

  public String toString() {

    return Integer.toString(i);

  }

}



public class DemoCloning {

  

  public static void main(String[] args) {

    ArrayList al = new ArrayList();

    

    for(int i = 0; i < 10; i++ )

      al.add(new Int(i));

    

    System.out.println("al: " + al);



    ArrayList al1 = (ArrayList)al.clone();

    

    // Increment all al1's elements:

    for(Iterator e = al1.iterator(); e.hasNext())  

      ((Int)e.next()).increment();



    // See if it changed al's elements:

    System.out.println("al: " + al);

  }

}

Clone () метод дает объекта, которое затем должно быть переработано для соответствующего типа. Этот пример показывает, как ArrayLists Clone () метод не автоматически пытается клонировать каждого из объектов, которые ArrayList containsthe старые ArrayList и клонированный ArrayList являются псевдонимами к тем же объектам. Это часто называют неполную копию, так как его копирование только наземная часть объекта. Фактически объект состоит из этой поверхности, а также все объекты, что ссылки указывают на, плюс все те объекты, объекты должны быть обращены, и т.д. Это часто называют веб-объектов. Копирование всего беспорядок называется глубокой копии. Вы можете увидеть эффект от мелкой копии в выходной, когда действия, выполняемые на AL1 влияет А.Л.:

al: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
al: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

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

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

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