如何制作对象的深层副本?

本文翻译自: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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值