第十一條:謹(jǐn)慎地覆蓋clone方法
(注意本文不適合學(xué)習(xí),純屬個人筆記)
1. clone方法簡介
關(guān)于clone方法的簡介可以看這里。
簡單總結(jié)一下,在java中我們想得到一個和之前用過的對象一模一樣的新對象粥鞋,簡單的使用=
符號復(fù)制是不行的掂为,我們需要用到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. 使用拷貝構(gòu)造器或者拷貝工廠方法來代替覆蓋Clone方法
拷貝構(gòu)造器例子:
public class MyObject {
public String field01;
public MyObject() {
}
public MyObject(MyObject object) {
this.field01 = object.field01;
}
}
拷貝靜態(tài)工廠:
public class MyObject {
public String field01;
public MyObject() {
}
public static MyObject newInstance(MyObject object) {
MyObject myObject = new MyObject();
myObject.field01 = object.field01;
return myObject;
}
}