Java中实现对象的Clone

来源:互联网 发布:机械类软件 编辑:程序博客网 时间:2024/05/19 18:38

Java中实现对象的Clone

1、 声明实现Cloneable接口,并重写clone方法,如果不重写该方法,则不能调用对象的clone方法。
2、 在重写的clone方法中,调用super.clone拿到一个对象,如果父类的clone实现没有问题的话,在该对象的内存存储中,所有父类定义的字段都已经clone好了,该类中的值类型字段和引用类型字段也克隆好了,只是现在的引用类型字段都是浅copy。
3、 把浅copy的引用指向原型对象新的克隆体。

 

public class Person implements Cloneable {private String name;private Integer age;public Person(String strName, Integer iAge){this.name = strName;this.age = iAge;}@Overrideprotected Object clone() throws CloneNotSupportedException {// TODO Auto-generated method stubreturn super.clone();}}


 

public class Account implements Cloneable {private Person person;private Integer balance;public Account(Person p, Integer i){this.person = p;this.balance = i;}@Overrideprotected Object clone() throws CloneNotSupportedException {// TODO Auto-generated method stubAccount account =(Account) super.clone();account.person = (Person)this.person.clone();return account;}}


 

注意点:Object.clone方式是protected(受保护的),该方法只在其子类和包内中可见。

原创粉丝点击