Package: groovy.transform

## [Java] Annotation Type ImmutableOptions

- groovy.transform.ImmutableOptions

- Class annotation used to assist in the creation of immutable classes. Defines any known immutable properties (or fields) or known immutable classes.

  See Also:
    Immutable
    ImmutablePropertyHandler
  Since:
    2.5.0

- - ### Element Summary

    Optional Element Summary
    Type | Name and 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.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Element Detail

    - #### public 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 {}

    - #### public 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 {}