概念:俗話就是拷貝一個副本
一般實現:
實現Cloneable 接口重寫clone()方法
部分代碼
public Object clone() {
Object o = null;
try {
o = (Student) super.clone();// Object中的clone()識別出你要複製的是哪一
// 個對象。
} catch (CloneNotSupportedException e) {
System.out.println(e.toString());
}
return o;
}
注意:淺複製不能同時複製引用
如果需要複製引用將需要引用的對象也克隆一下做深複製
更好的方法是利用序列化(常說的串行化)來實現深複製(不需要實現Cloneable接口,需要實現Serializable接口)
見部分代碼
public Object deepClone() throws IOException, OptionalDataException,
ClassNotFoundException {
// 將對象寫到流裏
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(this);
// 從流裏讀出來
ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
ObjectInputStream oi = new ObjectInputStream(bi);
return (oi.readObject());
}
更多內容請關注微信公衆號:IT哈哈(it_haha)