Annotation Type ToString


@Documented @Retention(RUNTIME) @Target(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.
Since:
1.8.0
Author:
Paul King
See Also:
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    Comma separated list of field and/or property names to exclude from generated toString.
    boolean
    Include fields as well as properties in generated toString
    boolean
    Whether to include names of properties/fields in generated toString
    Comma separated list of field and/or property names to include within the generated toString.
    boolean
    Whether to include super in generated toString
  • Element Details

    • excludes

      String excludes
      Comma separated list of field and/or property names to exclude from generated toString. Must not be used if 'includes' is used.
      Default:
      ""
    • includes

      String includes
      Comma separated list of field and/or property names to include within the generated toString. Must not be used if 'excludes' is used.
      Default:
      ""
    • includeSuper

      boolean includeSuper
      Whether to include super in generated toString
      Default:
      false
    • includeNames

      boolean includeNames
      Whether to include names of properties/fields in generated toString
      Default:
      false
    • includeFields

      boolean includeFields
      Include fields as well as properties in generated toString
      Default:
      false