Bre*_*ako 4 groovy immutability
在Groovy中,我可以通过以下操作使对象不可变:
@Immutable
class MyObject {
...
}
Run Code Online (Sandbox Code Playgroud)
但是,如果MyObject具有对可变对象的引用,例如
@Immutable
class MyObject {
MutableObject mutableObject
}
Run Code Online (Sandbox Code Playgroud)
我不能 我得到:
classes only support properties with effectively immutable types including
Run Code Online (Sandbox Code Playgroud)
但是,即使myObject具有MutableObject,对其的引用也永远不会改变。
有什么我可以做的,以使其MyObject尽可能不变?
如果您确定这MutableObject实际上是一成不变的,则可以这样做
@Immutable( knownImmutableClasses=[ MutableObject ] )
class MyObject {
MutableObject mutableObject
}
Run Code Online (Sandbox Code Playgroud)
显然,如果这是一个谎言并且mutableObject发生突变,则必须小心;-)
| 归档时间: |
|
| 查看次数: |
346 次 |
| 最近记录: |