您的位置:首页 > 编程语言 > Java开发

使用序列化实现java 对象的深拷贝

2011-04-24 23:09 706 查看

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;
 }


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: