2014-01-30 3 views
2

В Groovy я могу сделать объекты неизменные, выполнив:Создание объекта неизменен в Groovy

@Immutable 
class MyObject { 
    ... 
} 

Но, если MyObject есть ссылка на изменяемый объект, как в

@Immutable 
class MyObject { 
    MutableObject mutableObject 
} 

я не могу , Я получаю:

classes only support properties with effectively immutable types including 

Но, даже ты MyObject имеет MutableObject, ссылка на него никогда не изменится.

Есть ли что-нибудь, что я могу сделать, чтобы сделать MyObject неотвратимым насколько возможно?

ответ

3

Если вы уверены, что MutableObject эффективно неизменны вы можете сделать

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

Очевидно необходимо позаботиться, если это ложь и mutableObject мутирует ;-)

Смежные вопросы