一、Shallow Clone
1、现有一个对象 User u1 = new User("张三", "25", "Java开发");此时准备再获得一个 完全独立 且 和u1 完全相同的对象u2.
2、User u2 = u1.clone(); 此时生成了一个新的对象u2,并且具有和u1相同的属性值和方法,且两者不互相影响。
3、注意:以上仅适用于无引用类型。
二、Deep Clone
1、若User类中,含有引用类型属性,则需在User类中另做处理。
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; } }