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.

Since:
1.8.0
Author:
Paul King
See Also:
Immutable, Canonical

Optional Element Summary
 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
 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
 

excludes

public abstract 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

public abstract 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

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

Copyright © 2003-2012 The Codehaus. All rights reserved.