使用序列化实现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;
 }


你可能感兴趣的:(java)