# Class RecursiveToStringStyle

java.lang.Object
org.apache.commons.lang3.builder.ToStringStyle
org.apache.commons.lang3.builder.RecursiveToStringStyle

All Implemented Interfaces:
  `Serializable`

Direct Known Subclasses:
  `MultilineRecursiveToStringStyle`

public class RecursiveToStringStyle extends ToStringStyle
Works with `ToStringBuilder` to create a "deep" `toString`.

To use this class write code as follows:

    public class Job {
      String title;
      ...
    }

    public class Person {
      String name;
      int age;
      boolean smoker;
      Job job;

      ...

      public String toString() {
        return new ReflectionToStringBuilder(this, new RecursiveToStringStyle()).toString();
      }
    }

This will produce a toString of the format: `Person@7f54[name=Stephen,age=29,smoker=false,job=Job@43cd2[title=Manager]]`

Since:
  3.2
See Also:
  - Serialized Form

- ## Field Summary

  ### Fields inherited from class ToStringStyle

  `DEFAULT_STYLE, JSON_STYLE, MULTI_LINE_STYLE, NO_CLASS_NAME_STYLE, NO_FIELD_NAMES_STYLE, SHORT_PREFIX_STYLE, SIMPLE_STYLE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RecursiveToStringStyle()`
  Constructs a new instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected boolean`
  `accept(Class<?> clazz)`
  Returns whether or not to recursively format the given `Class`.
  `void`
  `appendDetail(StringBuffer buffer, String fieldName, Object value)`
  Appends to the `toString` an `Object` value, printing the full detail of the `Object`.
  `protected void`
  `appendDetail(StringBuffer buffer, String fieldName, Collection<?> coll)`
  Appends to the `toString` a `Collection`.

  ### Methods inherited from class ToStringStyle

  `append, append, append, append, append, append, append, append, append, append, append, append, append, append, append, append, append, append, appendClassName, appendContentEnd, appendContentStart, appendCyclicObject, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendDetail, appendEnd, appendFieldEnd, appendFieldSeparator, appendFieldStart, appendIdentityHashCode, appendInternal, appendNullText, appendStart, appendSummary, appendSummary, appendSummary, appendSummary, appendSummary, appendSummary, appendSummary, appendSummary, appendSummary, appendSummary, appendSummarySize, appendSuper, appendToString, getArrayEnd, getArraySeparator, getArrayStart, getContentEnd, getContentStart, getFieldNameValueSeparator, getFieldSeparator, getNullText, getRegistry, getShortClassName, getSizeEndText, getSizeStartText, getSummaryObjectEndText, getSummaryObjectStartText, isArrayContentDetail, isDefaultFullDetail, isFieldSeparatorAtEnd, isFieldSeparatorAtStart, isFullDetail, isUseClassName, isUseFieldNames, isUseIdentityHashCode, isUseShortClassName, reflectionAppendArrayDetail, removeLastFieldSeparator, setArrayContentDetail, setArrayEnd, setArraySeparator, setArrayStart, setContentEnd, setContentStart, setDefaultFullDetail, setFieldNameValueSeparator, setFieldSeparator, setFieldSeparatorAtEnd, setFieldSeparatorAtStart, setNullText, setSizeEndText, setSizeStartText, setSummaryObjectEndText, setSummaryObjectStartText, setUseClassName, setUseFieldNames, setUseIdentityHashCode, setUseShortClassName`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### RecursiveToStringStyle

    public RecursiveToStringStyle()
    Constructs a new instance.

- ## Method Details

  - ### accept

    protected boolean accept(Class<?> clazz)
    Returns whether or not to recursively format the given `Class`. By default, this method always returns `true`, but may be overwritten by subclasses to filter specific classes.
    Parameters:
      `clazz` - The class to test.
    Returns:
      Whether or not to recursively format the given `Class`.

  - ### appendDetail

    protected void appendDetail(StringBuffer buffer, String fieldName, Collection<?> coll)
    Description copied from class: `ToStringStyle`
    Appends to the `toString` a `Collection`.
    Overrides:
      `appendDetail` in class `ToStringStyle`
    Parameters:
      `buffer` - the `StringBuffer` to populate.
      `fieldName` - the field name, typically not used as already appended.
      `coll` - the `Collection` to add to the `toString`, not `null`.

  - ### appendDetail

    public void appendDetail(StringBuffer buffer, String fieldName, Object value)
    Description copied from class: `ToStringStyle`
    Appends to the `toString` an `Object` value, printing the full detail of the `Object`.
    Overrides:
      `appendDetail` in class `ToStringStyle`
    Parameters:
      `buffer` - the `StringBuffer` to populate.
      `fieldName` - the field name, typically not used as already appended.
      `value` - the value to add to the `toString`, not `null`.