Package groovy.transform

# Annotation Type 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
  --- | --- | ---
  `java.lang.Class[]` | `knownImmutableClasses` | Allows you to provide `@Immutable` with a list of classes which are deemed immutable.
  `java.lang.String[]` | `knownImmutables` | Allows you to provide `@Immutable` with a list of property names which are deemed immutable.

- ## Element Details

  - ### knownImmutableClasses

    java.lang.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

    java.lang.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:
      {}