必须实现Cloneable接口
public class Sheep implements Cloneable {
String name;
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
public String toString() {
return "Sheep{" + "name='" + name + '\'' + ", age=" + age + '}';
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class Test {
public static void main(String[] args) throws Exception {
Sheep sheep = new Sheep();
sheep.setName("lee");
sheep.setAge(22);
Sheep sheep1 = (Sheep)sheep.clone();
Sheep sheep2 = (Sheep)sheep.clone();
System.out.println(sheep);
System.out.println(sheep1);
System.out.println(sheep2);
}
}
深克隆clone方法
浅拷贝:对基本数据类型进行值传递,对引用数据类型,直接引用旧地址值,此为浅拷贝。
深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。
protected Sheep clone() throws CloneNotSupportedException {
Sheep sheep = (Sheep) super.clone();
sheep.benz = (Benz) sheep.benz.clone();
return sheep;
}








网友评论