第十一条:谨慎地覆盖clone方法
(注意本文不适合学习,纯属个人笔记)
1. clone方法简介
关于clone方法的简介可以看这里。
简单总结一下,在java中我们想得到一个和之前用过的对象一模一样的新对象,简单的使用=
符号复制是不行的,我们需要用到clone方法,这就是clone方法的用处。因为clone方法是protected
类型的,所以不能在外部直接使用,下面一段代码简单说明一下clone方法的使用:
public class CloneObject implements Cloneable {
public String field01;
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
throw new AssertionError();
}
}
}
首相我们需要是想Cloneable接口,然后再重载一个public类型的clone方法,然后在里面返回super.clone()就行了。
2. 使用拷贝构造器或者拷贝工厂方法来代替覆盖Clone方法
拷贝构造器例子:
public class MyObject {
public String field01;
public MyObject() {
}
public MyObject(MyObject object) {
this.field01 = object.field01;
}
}
拷贝静态工厂:
public class MyObject {
public String field01;
public MyObject() {
}
public static MyObject newInstance(MyObject object) {
MyObject myObject = new MyObject();
myObject.field01 = object.field01;
return myObject;
}
}