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:
    Immutable, Canonical
    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      java.lang.String excludes
      Comma separated list of field and/or property names to exclude from generated toString.
      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
      Comma separated 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

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

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