@ 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 个序列化库的列表)