如何正确克隆Object类?

时间:2015-05-16 20:46:30

标签: java copy copy-constructor deep-copy

我有一个包含字符串字段和Map的POJO类。 我阅读了有关克隆对象的Joshua Bloch Effective Java片段,但我认为这种情况并非如此微不足道。 我有几个POJO,我想使用Copy Constructor方法克隆它们,但我不知道如何克隆map中哪个值有对象?

我知道这个Object可能是一个简单的不可变对象,例如String类,但有时它可能是一个完全不同的POJO,甚至是列表或映射。我认为它可能工作的onyl方式是使用instanceof在构造函数中进行一些检查,但它很难看(我必须检查List,Map和每个POJO对吗?)。

也许我应该改变实现Cloneable接口的方法?

我也看到了一个带序列化的克隆方法,但我认为这也是一个丑陋的解决方案,而且它的性能会比较差,例如在使用Copy Constructor方法时。

您能否告诉我如何克隆我的POJO?

1 个答案:

答案 0 :(得分:0)

您可以查看Apache Commons BeanUtils。它具有cloneBean(Object bean)方法,即使该类未实现Cloneable接口,也会克隆所有属性。