本文翻译自:How do you make a deep copy of an object?
It's a bit difficult to implement a deep object copy function. 实现深层对象复制功能有点困难。 What steps you take to ensure the original object and the cloned one share no reference? 您采取什么步骤来确保原始对象和克隆对象没有引用?
#1楼
参考:https://stackoom.com/question/gEQ/如何制作对象的深层副本
#2楼
You can use a library that has a simple API, and performs relatively fast cloning with reflection (should be faster than serialization methods). 您可以使用具有简单API 的库 ,并使用反射执行相对较快的克隆(应该比序列化方法要快)。
Cloner cloner = new Cloner();
MyClass clone = cloner.deepClone(o);
// clone is a deep-clone of o
#3楼
XStream is really useful in such instances. XStream在这种情况下确实很有用。 Here is a simple code to do cloning 这是执行克隆的简单代码
private static final XStream XSTREAM = new XStream();
...
Object newObject = XSTREAM.fromXML(XSTREAM.toXML(obj));
#4楼
我使用Dozer克隆Java对象,这很不错, Kryo库是另一个很好的选择。
#5楼
Apache Commons提供了一种快速克隆对象的快速方法。
My_Object object2= org.apache.commons.lang.SerializationUtils.clone(object1);
#6楼
BeanUtils在深度克隆豆方面做得非常好。
BeanUtils.cloneBean(obj);