Package groovy.transform

# Annotation Interface ImmutableOptions

@Documented @Retention(SOURCE) @Target(TYPE) public @interface ImmutableOptions
Class annotation used to assist in the creation of immutable classes. Defines any known immutable properties (or fields) or known immutable classes.

Since:
  2.5.0
See Also:
  - `Immutable`
  - `ImmutablePropertyHandler`

- ## Optional Element Summary

  Optional Elements
  Modifier and Type
  Optional Element
  Description
  `Class[]`
  `knownImmutableClasses`
  Allows you to provide `@Immutable` with a list of classes which are deemed immutable.
  `String[]`
  `knownImmutables`
  Allows you to provide `@Immutable` with a list of property names which are deemed immutable.

- ## Element Details

  - ### knownImmutableClasses

    Class[] knownImmutableClasses
    Allows you to provide `@Immutable` with a list of classes which are deemed immutable. By supplying a class in this list, you are vouching for its immutability and `@Immutable` will do no further checks. Example:

         import groovy.transform.*
         @Immutable(knownImmutableClasses = [Address])
         class Person {
             String first, last
             Address address
         }

         @TupleConstructor
         class Address {
             final String street
         }

    Default:
      {}

  - ### knownImmutables

    String[] knownImmutables
    Allows you to provide `@Immutable` with a list of property names which are deemed immutable. By supplying a property's name in this list, you are vouching for its immutability and `@Immutable` will do no further checks. Example:

         @groovy.transform.Immutable(knownImmutables = ['address'])
         class Person {
             String first, last
             Address address
         }
         ...

    Default:
      {}