groovy.transform

## Annotation Type ToString

    @Documented
    @Retention(value=RUNTIME)
    @Target(value=TYPE)
    public @interface ToString

Class annotation used to assist in the creation of `toString()` methods in classes. The `@ToString` annotation instructs the compiler to execute an AST transformation which adds the necessary toString() method.

It allows you to write classes in this shortened form:

     @ToString
     class Customer {
         String first, last
         int age
         Date since = new Date()
         Collection favItems
         private answer = 42
     }
     println new Customer(first:'Tom', last:'Jones', age:21, favItems:['Books', 'Games'])

Which will have this output:

     Customer(Tom, Jones, 21, Wed Jul 14 23:57:14 EST 2010, [Books, Games])

There are numerous options to customize the format of the generated output. E.g. if you change the first annotation to:

     @ToString(includeNames=true)

Then the output will be:

     Customer(first:Tom, last:Jones, age:21, since:Wed Jul 14 23:57:50 EST 2010, favItems:[Books, Games])

Or if you change the first annotation to:

     @ToString(includeNames=true,includeFields=true,excludes="since,favItems")

Then the output will be:

     Customer(first:Tom, last:Jones, age:21, answer:42)

If you have this example:

     import groovy.transform.ToString
     @ToString class NamedThing {
         String name
     }
     @ToString(includeNames=true,includeSuper=true)
     class AgedThing extends NamedThing {
         int age
     }
     println new AgedThing(name:'Lassie', age:5)

Then the output will be:

     AgedThing(age:5, super:NamedThing(Lassie))

`@ToString` can also be used in conjunction with `@Canonical` and `@Immutable`.

If you want to omit fields or properties referring to `null`, you can use the `ignoreNulls` flag:

     import groovy.transform.ToString
     @ToString(ignoreNulls = true) class NamedThing {
         String name
     }
     println new NamedThing(name: null)

Which results in:

     NamedThing()

Since:
  1.8.0
See Also:
  `Immutable`, `Canonical`

### Optional Element Summary

Optional Elements
`java.lang.String[]` `excludes` List of field and/or property names to exclude from generated toString.
`boolean` `ignoreNulls` Don't display any fields or properties with value `null`.
`boolean` `includeFields` Include fields as well as properties in generated toString.
`boolean` `includeNames` Whether to include names of properties/fields in generated toString.
`java.lang.String[]` `includes` List of field and/or property names to include within the generated toString.
`boolean` `includeSuper` Whether to include super in generated toString.

### Element Detail

#### excludes

    public abstract java.lang.String[] excludes

List of field and/or property names to exclude from generated toString. Must not be used if 'includes' is used. For convenience, a String with comma separated names can be used in addition to an array (using Groovy's literal list notation) of String values.

Default:
  {}

#### includes

    public abstract java.lang.String[] includes

List of field and/or property names to include within the generated toString. Must not be used if 'excludes' is used. For convenience, a String with comma separated names can be used in addition to an array (using Groovy's literal list notation) of String values.

Default:
  {}

#### includeSuper

    public abstract boolean includeSuper

Whether to include super in generated toString.

Default:
  false

#### includeNames

    public abstract boolean includeNames

Whether to include names of properties/fields in generated toString.

Default:
  false

#### includeFields

    public abstract boolean includeFields

Include fields as well as properties in generated toString.

Default:
  false

#### ignoreNulls

    public abstract boolean ignoreNulls

Don't display any fields or properties with value `null`.

Default:
  false