Главная
>>
Каталог задач
>>
Разное
>>
Клонирование объектов
>>
Глубокое полное клонирование
Aвтор:
неизвестный
Дата:
02.05.2007
Просмотров: 36826
реализации(java: 1шт...)
+добавить
Примеры глубокого клонирования экземпляров объектов.
Напомним, что глубокое, полное клонирование представляет из себя копию объекта, когда помимо всего прочего делаются еще и копии всех других объектов, доступных по ссылкам из первоначального.
Глубина клонирования всей цепочки - ничем не ограничивается.
Реализации:
java(1)
+добавить
1)
Глубокое полное клонирование на java, code #197[автор:-]
/*
Correct Output:
Original (orginal values): Person-A - Civic
Clone (before change): Person-A - Civic
Clone (after change): Person-B - Accord
Original (after clone is modified): Person-A - Civic
*/
/*
Software Architecture Design Patterns in Java
by Partha Kuchana
Auerbach Publications
*/
//Lower-level object
private Car car;
public Car getCar() {
return car;
}
return name;
}
public void setName
(String s
) { name = s;
}
name = s;
car = new Car(t);
}
//Deep copy
Person p = new Person(name, car.getName());
return p;
}
}
class Car {
return name;
}
public void setName
(String s
) { name = s;
}
name = s;
}
}
public class DeepCopyTest {
public static void main
(String[] args
) { //Original Object
Person p = new Person("Person-A", "Civic");
System.
out.
println("Original (orginal values): " + p.
getName() +
" - " + p.getCar().getName());
//Clone as a shallow copy
Person q = (Person) p.clone();
System.
out.
println("Clone (before change): " + q.
getName() +
" - " + q.getCar().getName());
//change the primitive member
q.setName("Person-B");
//change the lower-level object
q.getCar().setName("Accord");
System.
out.
println("Clone (after change): " + q.
getName() +
" - " + q.getCar().getName());
System.
out.
println("Original (after clone is modified): " + p.
getName() + " - " + p.getCar().getName());
}
}