Package groovy.transform
Annotation Type ImmutableBase
@Documented
@Retention(SOURCE)
@Target(TYPE)
public @interface ImmutableBase
Class annotation used to assist in the creation of immutable classes.
Checks on the validity of an immutable class and makes some preliminary changes to the class.
Usually used via the
@Immutable
meta annotation.
Custom property handling:
- The
@ImmutableBase
annotation supports customization using@PropertyOptions
which allows a custom property handler to be defined. This is most typically used behind the scenes by the@Immutable
meta-annotation but you can also define your own handler. If a custom handler is present, it will determine the code generated for the getters and setters of any property.
- Since:
- 2.5.0
- See Also:
Immutable
,ImmutableOptions
,MapConstructor
,TupleConstructor
,PropertyOptions
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description boolean
copyWith
Iftrue
, this adds a methodcopyWith
which takes a Map of new property values and returns a new instance of the Immutable class with these values set.
-
Element Details
-
copyWith
boolean copyWithIftrue
, this adds a methodcopyWith
which takes a Map of new property values and returns a new instance of the Immutable class with these values set. Example:@groovy.transform.Immutable
(copyWith = true) class Person { String first, last } def tim = new Person( 'tim', 'yates' ) def alice = tim.copyWith( first:'alice' ) assert tim.first == 'tim' assert alice.first == 'alice'copyWith
that takes a single parameter already exists in the class, then this setting is ignored, and no method is generated.- Default:
- false
-