package com.yd.wmsc.copy;
import java.util.*;
public class TestCopy {
public static void main(String[] args) throws CloneNotSupportedException {
Name name = new Name("John", "Chen");
Person person = new Person(name, 28);
Person copyOfPerson = (Person)person.clone();
/*
List<Object> srclst = new ArrayList<Object>();
List<Object> destlst = new ArrayList<Object>();
srclst.add(person);
destlst.add(null);
// copy into dest list
Collections.copy(destlst, srclst);
System.out.println(destlst.size());
Person copyOfPerson = (Person)destlst.get(0);*/
name.setFirstName("Johnny");
name.setLastName("Qin");
person.setAge(29);
System.out.println(copyOfPerson.getName().getFirstName() + " " +
copyOfPerson.getName().getLastName() +
" " + copyOfPerson.getAge());
//浅拷贝Johnny Qin 28
//深拷贝John Chen 28
//Collections.copy Johnny Qin 29
}
}
package com.yd.wmsc.copy;
public class Name implements Cloneable {
private String firstName;
private String lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
package com.yd.wmsc.copy;
public class Person implements Cloneable {
private Name name;
private int age;
public Person(Name name,int age){
this.name = name;
this.age = age;
}
protected Object clone() throws CloneNotSupportedException {
//浅拷贝
//return super.clone();
//深拷贝
Person person = (Person)super.clone();
person.setName((Name)person.getName().clone());
return person;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}