RecursiveToStringStyle
Date: 2017-02-08

org.apache.commons.lang3.builder

## Class RecursiveToStringStyle

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

- All Implemented Interfaces:
    java.io.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 org.apache.commons.lang3.builder.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 and Description
    `RecursiveToStringStyle()` Constructor.

  - ### Method Summary

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

    - ### Methods inherited from class org.apache.commons.lang3.builder.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, 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, 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 java.lang.Object

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

- - ### Constructor Detail

    - #### RecursiveToStringStyle

          public RecursiveToStringStyle()

      Constructor.

  - ### Method Detail

    - #### appendDetail

          public void appendDetail(java.lang.StringBuffer buffer,
                          java.lang.String fieldName,
                          java.lang.Object value)

      Description copied from class: `ToStringStyle`

      Append 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`

    - #### appendDetail

          protected void appendDetail(java.lang.StringBuffer buffer,
                          java.lang.String fieldName,
                          java.util.Collection<?> coll)

      Description copied from class: `ToStringStyle`

      Append 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`

    - #### accept

          protected boolean accept(java.lang.Class<?> clazz)

      Returns whether or not to recursively format the given `Class`. By default, this method always returns `true`, but may be overwritten by sub-classes to filter specific classes.
      Parameters:
        `clazz` - The class to test.
      Returns:
        Whether or not to recursively format the given `Class`.