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))
 

Since:
1.8.0
Author:
Paul King

Optional Element Summary
 String excludes
          Comma separated list of field and 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
 boolean includeSuper
          Whether to include super in generated toString
 

excludes

public abstract String excludes
Comma separated list of field and property names to exclude from generated toString

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-2010 The Codehaus. All rights reserved.