在Java中创建Immutable对象克隆的方法

时间:2015-02-27 05:52:08

标签: java immutability mutable

我有一个场景,其中我将Model对象的集合与标识符[BASE]相关联。 根据我的业务用例,我可以从标识符[BASE]创建一个场景。在这种情况下,还会引用模型对象上的集合。 这样做我不需要再次创建相同数据的快照。

另一个用例是用户可能会从标识符[BASE]修改派生方案中的某些值。在这种情况下,与修改后的值对应的Model对象将替换为新的Model对象。

这种情况可能会多次发生,其中我的整个Model对象集合可能被新对象替换。

我的问题是创建一个新的不可变对象并在每次用户调整任何内容时在引用中替换它的方法是否合适。

或者可能有另一种更好的方法,其中每当用户修改对象而不是返回一个新的不可变对象时,我们应该返回一个新的可变对象,该对象可以根据用户的要求进一步变异多次。这也可以确保模型对象的初始集合不会发生变异。

任何想法。

TIA!

2 个答案:

答案 0 :(得分:2)

永远没有任何理由克隆不可变对象。因为它们是不可变的,所以分享它们是安全的。复制一个将浪费记忆。

答案 1 :(得分:0)

我使用了Copyconstructor来复制对象并覆盖我想要的任何值。 因此,每当需要修改对象时,我都会使用复制构造函数基于具有更新值的现有对象创建一个新对象。