Java深拷贝库

5
有没有可以进行深度复制的库?
例如:普通对象、数组、列表、输入流等。

https://dev59.com/SnVD5IYBdhLWcg3wKoWH - palacsint
Kryo内置了复制/克隆的支持。这是直接从对象到对象的复制,而不是对象->字节->对象。 - NateS
5个回答

6
@Konrad的帖子非常到位。唯一进行深层复制的通用方法是使用Java序列化机制。
显然,这很费资源。
另一个注意事项是,有些Java对象无法通过序列化进行复制。例如:
  • 线程和其子类无法被序列化,因为线程的执行状态无法被序列化。

  • 通常情况下,流无法被序列化,因为您无法访问已经写入的流的状态(编写器、输出流)或尚未读取的流的状态(读取器、输入流)。 (实际上,在读取器/输入流的情况下,该状态可能真的是无限的。)

  • GUI组件无法被序列化,因为它们依赖于(外部)图形环境,这是无法被序列化的。


4

1
快速评论:据我所知,基准测试不仅由Kryo作者完成,而是由一群人完成的。也就是说,作为集体工作,它应该比任何单个作者的基准测试更客观。特别是因为多个“竞争”作者参与了基准测试,这有助于保持每个人的诚实。 - StaxMan

3
也许你可以看一下Dozer,它和IT技术有关。

1
  1. 对于小对象:使用复制构造函数。
  2. 对于大型对象,其成员引用具有树状结构的情况,建议使用Java序列化。

0

有一个小型库,可以进行深度克隆和浅层克隆。这个答案包含更多细节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接