1、现有一个对象 User u1 = new User("张三", "25", "Java开发");此时准备再获得一个 完全独立 且 和u1 完全相同的对象u2.
2、User u2 = u1.clone(); 此时生成了一个新的对象u2,并且具有和u1相同的属性值和方法,且两者不互相影响。
3、注意:以上仅适用于无引用类型。 (Shallow Clone)
4、若User类中,含有引用类型属性,则需在User类中另做处理。(Deep Clone)
public class User implements Cloneable{
private int age;
private Car car;
public void setAge(int age){
this.age = age;
}
public int getAge(){
return this.age;
}
public void setCar(Car car) {
this.car = car;
}
public Car getCar(){
return this.car;
}
// 重写clone
public Object clone() throws CloneNotSupportedException {
User userClone=(User)super.clone();
// 调用引用对象的clone方法
if(car!=null){
Car carClone = (Car)car.clone();
userClone.setCar(carClone);
}
return userClone;
}
}