1. 程式人生 > >java淺克隆與深克隆

java淺克隆與深克隆

java 深克隆 淺克隆

概念:俗話就是拷貝一個副本

一般實現:

實現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)


技術分享


本文出自 “doujh” 博客,請務必保留此出處http://doujh.blog.51cto.com/10177066/1932919

java淺克隆與深克隆