在Groovy中,我可以通过执行以下操作使对象不可变:
@Immutable
class MyObject {
...
}
但是,如果MyObject在
中引用了一个可变对象@Immutable
class MyObject {
MutableObject mutableObject
}
我做不到。我明白了:
classes only support properties with effectively immutable types including
但是,即使你的myObject有一个MutableObject,对它的引用永远不会改变。
我能做些什么让MyObject
尽可能不变?
答案 0 :(得分:5)
如果您确定MutableObject
实际上是不可变的,那么您可以
@Immutable( knownImmutableClasses=[ MutableObject ] )
class MyObject {
MutableObject mutableObject
}
如果这是谎言并且mutableObject发生变异,显然必须小心; - )