Any class definition may be annotated with @ToString
to let lombok generate an implementation of the
toString()
method. By default, it'll print your class name, along with each field, in order, separated by commas.
By setting the includeFieldNames
parameter to true you can add some clarity (but also quite some length) to
the output of the toString()
method.
By default, all non-static fields will be printed. If you want to skip some fields, you can name them in the exclude
parameter; each named
field will not be printed at all. Alternatively, you can specify exactly which fields you wish to be used by naming them in the of
parameter.
By setting callSuper
to true, you can include the output of the superclass implementation of toString
to the
output. Be aware that the default implementation of toString()
in java.lang.Object
is pretty much meaningless, so you
probably don't want to do this unless you are extending another class.
If there is any method named toString
regardless of parameters or return type, no method will be generated, and instead
a warning is emitted explaining that your @ToString
annotation is doing nothing.
Arrays are printed via Arrays.deepToString
, which means that arrays that contain themselves will result in StackOverflowError
s. However,
this behaviour is no different from e.g. ArrayList
.
Attempting to exclude fields that don't exist or would have been excluded anyway (because they are static) results in warnings on the named fields. You therefore don't have to worry about typos.
Having both exclude
and of
generates a warning; the exclude
parameter will be ignored in that case.
We don't promise to keep the output of the generated toString()
methods the same between lombok versions. You should never design your API so that
other code is forced to parse your toString()
output anyway!
By default, any variables that start with a $ symbol are excluded automatically. You can only include them by using the 'of' parameter.
If a getter exists for a field to be included, it is called instead of using a direct field reference. This behaviour can be suppressed:
@ToString(doNotUseGetters = true)
@ToString
can also be used on an enum definition.