java中克隆研究

来源:互联网 发布:照片合成软件 编辑:程序博客网 时间:2024/05/17 09:28

实现克隆的步骤

  1. 让类实现Cloneable接口
  2. 重写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;    }}


克隆的使用场景

  • 比如一个对象的初始化复杂,你需要得到一份相似的对象,使用克隆,将会是一个不错的选择。
  • 克隆在对数组的复制也是十分方便的,可以直接使用。
0 0
原创粉丝点击