一、作用:
创建对象的时候,希望不止创建对象,还要有原型对象的数据
对新目标对象的修改,不影响既有的原型对象(深度克隆)
二、实现方法:
在需要被克隆的类上,实现Cloneable接口
三、代码
public class person implements Cloneable {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
protected person clone() throws CloneNotSupportedException {
return (person) super.clone();
}
}
如果要求深克隆,需要重写clone方法如下:
@Override
protected shenKeLong clone() throws CloneNotSupportedException {
shenKeLong clone1 = (shenKeLong) super.clone();
List<String> list1=new ArrayList<>();
for (String list2 : list){
list1.add(list2);
}
clone1.setList(list1);
return clone1;
}
原因,引用类类型,在堆上是一个对象,因此要手动复制一个新对象