有没有可以进行深拷贝的库?
ex) 普通对象、数组、列表、输入流等。
@Konrad 的帖子很到位。进行深度复制的唯一通用方法是使用 Java 序列化机制。
显然,它很昂贵。
另一个需要注意的是,某些 Java 对象无法通过序列化来复制。例子包括
线程和子类不能被序列化,因为线程的执行状态不能被序列化。
流通常无法序列化,因为您无法获得已写入(写入器、输出流)或尚未读取(读取器、输入流)的流的状态。(实际上,在阅读器/输入流的情况下,该状态实际上可能是无限的。)
GUI 组件无法序列化,因为它们依赖于无法序列化的(外部)图形环境。
寻找序列化。Java 开箱即用地支持它,但您也可以尝试 Hessian、Kryo...
下面是Java序列化的介绍:http: //java.sun.com/developer/technicalArticles/Programming/serialization/
这是 Kryo 人所做的基准测试:http ://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking (20 个序列化库的列表)
也许你可以看看 推土机。
有一个小型库可以进行深度克隆和浅层克隆。这个答案包含更多细节。