在Groovy中使对象不可变

时间:2014-01-30 11:14:41

标签: groovy immutability

在Groovy中,我可以通过执行以下操作使对象不可变:

@Immutable 
class MyObject {
   ...
}

但是,如果MyObject在

中引用了一个可变对象
@Immutable 
class MyObject {
    MutableObject mutableObject
}

我做不到。我明白了:

classes only support properties with effectively immutable types including

但是,即使你的myObject有一个MutableObject,对它的引用永远不会改变。

我能做些什么让MyObject尽可能不变?

1 个答案:

答案 0 :(得分:5)

如果您确定MutableObject实际上是不可变的,那么您可以

@Immutable( knownImmutableClasses=[ MutableObject ] )
class MyObject {
    MutableObject mutableObject
}

如果这是谎言并且mutableObject发生变异,显然必须小心; - )