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

@Immutable
class MyObject {
   ...
}

但是,如果 MyObject 具有对可变对象的引用,如
@Immutable
class MyObject {
    MutableObject mutableObject
}

我不能。我得到:
classes only support properties with effectively immutable types including

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

我可以做些什么来使 MyObject 尽可能不可变?

最佳答案

如果您确定 MutableObject 实际上是不可变的,您可以这样做

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

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

关于groovy - 在 Groovy 中使对象不可变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21454901/

10-12 03:51