如何实现一个精妙的对象集合深拷贝,其中内容对象必须遵循序列化接口?

更新于
2026-10-12 10:33:44
1阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计203个文字,预计阅读时间需要1分钟。

如何实现一个精妙的对象集合深拷贝,其中内容对象必须遵循序列化接口?

“众所周知,Java中对可变对象的深拷贝是头疼的,因为你总是使用引用地址。下面这段代码是一个利用序列化实现深拷贝的利用序列化实现深拷贝的示例:

javapublic static List deepCopy(List src) throws IOException, ClassNotFoundException { // 将对象写入到流中 ByteArrayOutputStream bo=new ByteArrayOutputStream(); ObjectOutputStream oo=new ObjectOutputStream(bo); oo.writeObject(src);

// 从流中读取对象 ByteArrayInputStream bi=new ByteArrayInputStream(bo.toByteArray()); ObjectInputStream oi=new ObjectInputStream(bi); return (List) oi.readObject();}

如何实现一个精妙的对象集合深拷贝,其中内容对象必须遵循序列化接口?

众所周知,java里要做到对可变对象的深拷贝是麻烦的,因为你总是引用的地址,下面这一段是一个利用序列化流实现的对象集合的深拷贝

public static List deepCopy(List src) throws IOException, ClassNotFoundException { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(src); ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in = new ObjectInputStream(byteIn); @SuppressWarnings("unchecked") List dest = (List ) in.readObject(); return dest; }

本文共计203个文字,预计阅读时间需要1分钟。

如何实现一个精妙的对象集合深拷贝,其中内容对象必须遵循序列化接口?

“众所周知,Java中对可变对象的深拷贝是头疼的,因为你总是使用引用地址。下面这段代码是一个利用序列化实现深拷贝的利用序列化实现深拷贝的示例:

javapublic static List deepCopy(List src) throws IOException, ClassNotFoundException { // 将对象写入到流中 ByteArrayOutputStream bo=new ByteArrayOutputStream(); ObjectOutputStream oo=new ObjectOutputStream(bo); oo.writeObject(src);

// 从流中读取对象 ByteArrayInputStream bi=new ByteArrayInputStream(bo.toByteArray()); ObjectInputStream oi=new ObjectInputStream(bi); return (List) oi.readObject();}

如何实现一个精妙的对象集合深拷贝,其中内容对象必须遵循序列化接口?

众所周知,java里要做到对可变对象的深拷贝是麻烦的,因为你总是引用的地址,下面这一段是一个利用序列化流实现的对象集合的深拷贝

public static List deepCopy(List src) throws IOException, ClassNotFoundException { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(src); ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in = new ObjectInputStream(byteIn); @SuppressWarnings("unchecked") List dest = (List ) in.readObject(); return dest; }