/**
* @(#)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接口。
浙公网安备 33010602011771号