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)


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章