深克隆

/**
 * @(#)DeepClone.java
 *
 *
 * @author leo
 * @version 1.00 2008/3/10
 */
import java.io.Serializable;
import java.io.IOException;
import java.io.OptionalDataException;
import java.io.*;

public class DeepClone implements Serializable {

    public DeepClone() {
    }
   
    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();
    }
   
    public static void main(String[] args) throws Exception {
     DeepClone dc = new DeepClone();
     DeepClone dc1 = (DeepClone) dc.deepClone();
     
     System.out.println(dc);
     System.out.println(dc1);
    }
}

注意:如果被克隆对象内部含有其他对象的引用,那么这些引用所代表的类也要实现Serializable接口。

你可能感兴趣的:(克隆)