使用序列化实现java 对象的深拷贝
clone是Object类的方法,如果对象中的所有属性都属于数值或者基本类型,这样拷贝没有问题的,但是,如果对象中包含子对象的引用,那么拷贝的结果就是两个对象引用同一个子对象。 但是可以通过序列化的方式来实现对象的深拷贝
?
public Serializable deepCopy() throws IOException, ClassNotFoundException{
??ByteArrayOutputStream baos = new ByteArrayOutputStream();
??ObjectOutputStream oos = new ObjectOutputStream(baos);
??oos.writeObject(this);
??oos.close();
??baos.close();
??ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
??ObjectInputStream ois = new ObjectInputStream(bais);
??Serializable obj =? (Serializable) ois.readObject();
??ois.close();
??bais.close();
??return obj;
?}