您的位置:首页 > 编程语言 > Java开发

java中克隆研究

2016-05-14 12:11 411 查看

实现克隆的步骤

让类实现Cloneable接口

重写clone方法为public,并调用super.clone()

代码示例

public class People implements Cloneable {

private int age;

private String name;

public People(int age, String name) {
super();
this.age = age;
this.name = name;
}

public People() {
super();
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}

}


调用

public class Test {

public static void main(String[] args) throws CloneNotSupportedException {
People people = new People(11, "zzh");
People copy = (People) people.clone();
System.out.println(copy.getAge());
}

}


这是一个浅克隆,如果对象中含有引用其他对象的属性,克隆后引用也将指向同一个对象,深克隆需要自己在clone()方法中实现,例如

public class People implements Cloneable {

private int age;

private String name;

private Phone phone;

public People(int age, String name) {
super();
this.age = age;
this.name = name;
}

public People() {
super();
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Phone getPhone() {
return phone;
}

public void setPhone(Phone phone) {
this.phone = phone;
}

@Override
public People clone() throws CloneNotSupportedException {
People p = null;
p = (People) super.clone();
p.phone = (Phone) phone.clone();
return p;
}

}


克隆的使用场景

比如一个对象的初始化复杂,你需要得到一份相似的对象,使用克隆,将会是一个不错的选择。

克隆在对数组的复制也是十分方便的,可以直接使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  clone