【Java核心技术——对象克隆】

来源:互联网 发布:java接口调用频率监控 编辑:程序博客网 时间:2024/05/10 09:51

clone方法:

在Object类中,clone方法被声明为protected,因此无法调用T.clone() ,T为任意对象。

必须重新定义clone方法,将它声明为public,并实现Cloneable接口。

Cloneable接口是一个标记接口,并没有任何方法,唯一的目的就是可疑用instanceof进行类型检查。


浅拷贝:

默认的克隆操作,它并没有克隆对象中的对象。

对于对象中的可变对象,使用浅拷贝只会拷贝对象引用,导致对象引用与它的拷贝引用同一个对象。

class Person implements Cloneable {        public Person clone() throws CloneNotSupportedException {        return (Person) super.clone();    }}

深拷贝:

必须克隆对象中的所有可变对象。

class Person implements Cloneable {        Dog dog;        public Person clone() throws CloneNotSupportedException {        Person cloned = (Person) super.clone();        cloned.dog = dog.clone();        return cloned;    }}


0 0