Class ReflectionToStringBuilder

java.lang.Object
org.apache.commons.lang.builder.ToStringBuilder
org.apache.commons.lang.builder.ReflectionToStringBuilder

@Deprecated(since="2021-04-30") public class ReflectionToStringBuilder extends ToStringBuilder
Deprecated.
Commons Lang 2 is in maintenance mode. Commons Lang 3 should be used instead.

Assists in implementing Object.toString() methods using reflection.

This class uses reflection to determine the fields to append. Because these fields are usually private, the class uses AccessibleObject.setAccessible(java.lang.reflect.AccessibleObject[], boolean) to change the visibility of the fields. This will fail under a security manager, unless the appropriate permissions are set up correctly.

A typical invocation for this method would look like:

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

You can also use the builder to debug 3rd party objects:

  System.out.println("An object: " + ReflectionToStringBuilder.toString(anObject));

A subclass can control field output by overriding the methods:

  • accept(java.lang.reflect.Field)
  • getValue(java.lang.reflect.Field)

For example, this method does not include the password field in the returned String:

  public String toString() {
      return (new ReflectionToStringBuilder(this) {
          protected boolean accept(Field f) {
              return super.accept(f) invalid input: '&'invalid input: '&' !f.getName().equals("password");
          }
      }).toString();
  }

The exact format of the toString is determined by the ToStringStyle passed into the constructor.

Since:
2.0
  • Constructor Details

    • ReflectionToStringBuilder

      public ReflectionToStringBuilder(Object object)
      Deprecated.

      Constructor.

      This constructor outputs using the default style set with setDefaultStyle.

      Parameters:
      object - the Object to build a toString for, must not be null
      Throws:
      IllegalArgumentException - if the Object passed in is null
    • ReflectionToStringBuilder

      public ReflectionToStringBuilder(Object object, ToStringStyle style)
      Deprecated.

      Constructor.

      If the style is null, the default style is used.

      Parameters:
      object - the Object to build a toString for, must not be null
      style - the style of the toString to create, may be null
      Throws:
      IllegalArgumentException - if the Object passed in is null
    • ReflectionToStringBuilder

      public ReflectionToStringBuilder(Object object, ToStringStyle style, StringBuffer buffer)
      Deprecated.

      Constructor.

      If the style is null, the default style is used.

      If the buffer is null, a new one is created.

      Parameters:
      object - the Object to build a toString for
      style - the style of the toString to create, may be null
      buffer - the StringBuffer to populate, may be null
      Throws:
      IllegalArgumentException - if the Object passed in is null
    • ReflectionToStringBuilder

      public ReflectionToStringBuilder(Object object, ToStringStyle style, StringBuffer buffer, Class reflectUpToClass, boolean outputTransients)
      Constructor.
      Parameters:
      object - the Object to build a toString for
      style - the style of the toString to create, may be null
      buffer - the StringBuffer to populate, may be null
      reflectUpToClass - the superclass to reflect up to (inclusive), may be null
      outputTransients - whether to include transient fields
    • ReflectionToStringBuilder

      public ReflectionToStringBuilder(Object object, ToStringStyle style, StringBuffer buffer, Class reflectUpToClass, boolean outputTransients, boolean outputStatics)
      Deprecated.
      Constructor.
      Parameters:
      object - the Object to build a toString for
      style - the style of the toString to create, may be null
      buffer - the StringBuffer to populate, may be null
      reflectUpToClass - the superclass to reflect up to (inclusive), may be null
      outputTransients - whether to include transient fields
      outputStatics - whether to include static fields
      Since:
      2.1
  • Method Details

    • toString

      public static String toString(Object object)
      Deprecated.

      Builds a toString value using the default ToStringStyle through reflection.

      It uses AccessibleObject.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manager, if the permissions are not set up correctly. It is also not as efficient as testing explicitly.

      Transient members will be not be included, as they are likely derived. Static fields will not be included. Superclass fields will be appended.

      Parameters:
      object - the Object to be output
      Returns:
      the String result
      Throws:
      IllegalArgumentException - if the Object is null
    • toString

      public static String toString(Object object, ToStringStyle style)
      Deprecated.

      Builds a toString value through reflection.

      It uses AccessibleObject.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manager, if the permissions are not set up correctly. It is also not as efficient as testing explicitly.

      Transient members will be not be included, as they are likely derived. Static fields will not be included. Superclass fields will be appended.

      If the style is null, the default ToStringStyle is used.

      Parameters:
      object - the Object to be output
      style - the style of the toString to create, may be null
      Returns:
      the String result
      Throws:
      IllegalArgumentException - if the Object or ToStringStyle is null
    • toString

      public static String toString(Object object, ToStringStyle style, boolean outputTransients)
      Deprecated.

      Builds a toString value through reflection.

      It uses AccessibleObject.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manager, if the permissions are not set up correctly. It is also not as efficient as testing explicitly.

      If the outputTransients is true, transient members will be output, otherwise they are ignored, as they are likely derived fields, and not part of the value of the Object.

      Static fields will not be included. Superclass fields will be appended.

      If the style is null, the default ToStringStyle is used.

      Parameters:
      object - the Object to be output
      style - the style of the toString to create, may be null
      outputTransients - whether to include transient fields
      Returns:
      the String result
      Throws:
      IllegalArgumentException - if the Object is null
    • toString

      public static String toString(Object object, ToStringStyle style, boolean outputTransients, boolean outputStatics)
      Deprecated.

      Builds a toString value through reflection.

      It uses AccessibleObject.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manager, if the permissions are not set up correctly. It is also not as efficient as testing explicitly.

      If the outputTransients is true, transient fields will be output, otherwise they are ignored, as they are likely derived fields, and not part of the value of the Object.

      If the outputStatics is true, static fields will be output, otherwise they are ignored.

      Static fields will not be included. Superclass fields will be appended.

      If the style is null, the default ToStringStyle is used.

      Parameters:
      object - the Object to be output
      style - the style of the toString to create, may be null
      outputTransients - whether to include transient fields
      outputStatics - whether to include transient fields
      Returns:
      the String result
      Throws:
      IllegalArgumentException - if the Object is null
      Since:
      2.1
    • toString

      public static String toString(Object object, ToStringStyle style, boolean outputTransients, boolean outputStatics, Class reflectUpToClass)
      Deprecated.

      Builds a toString value through reflection.

      It uses AccessibleObject.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manager, if the permissions are not set up correctly. It is also not as efficient as testing explicitly.

      If the outputTransients is true, transient fields will be output, otherwise they are ignored, as they are likely derived fields, and not part of the value of the Object.

      If the outputStatics is true, static fields will be output, otherwise they are ignored.

      Superclass fields will be appended up to and including the specified superclass. A null superclass is treated as java.lang.Object.

      If the style is null, the default ToStringStyle is used.

      Parameters:
      object - the Object to be output
      style - the style of the toString to create, may be null
      outputTransients - whether to include transient fields
      outputStatics - whether to include static fields
      reflectUpToClass - the superclass to reflect up to (inclusive), may be null
      Returns:
      the String result
      Throws:
      IllegalArgumentException - if the Object is null
      Since:
      2.1
    • toString

      public static String toString(Object object, ToStringStyle style, boolean outputTransients, Class reflectUpToClass)

      Builds a toString value through reflection.

      It uses AccessibleObject.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manager, if the permissions are not set up correctly. It is also not as efficient as testing explicitly.

      If the outputTransients is true, transient members will be output, otherwise they are ignored, as they are likely derived fields, and not part of the value of the Object.

      Static fields will not be included. Superclass fields will be appended up to and including the specified superclass. A null superclass is treated as java.lang.Object.

      If the style is null, the default ToStringStyle is used.

      Parameters:
      object - the Object to be output
      style - the style of the toString to create, may be null
      outputTransients - whether to include transient fields
      reflectUpToClass - the superclass to reflect up to (inclusive), may be null
      Returns:
      the String result
      Throws:
      IllegalArgumentException - if the Object is null
      Since:
      2.0
    • toStringExclude

      public static String toStringExclude(Object object, String excludeFieldName)
      Deprecated.
      Builds a String for a toString method excluding the given field name.
      Parameters:
      object - The object to "toString".
      excludeFieldName - The field name to exclude
      Returns:
      The toString value.
    • toStringExclude

      public static String toStringExclude(Object object, Collection excludeFieldNames)
      Deprecated.
      Builds a String for a toString method excluding the given field names.
      Parameters:
      object - The object to "toString".
      excludeFieldNames - The field names to exclude. Null excludes nothing.
      Returns:
      The toString value.
    • toStringExclude

      public static String toStringExclude(Object object, String[] excludeFieldNames)
      Deprecated.
      Builds a String for a toString method excluding the given field names.
      Parameters:
      object - The object to "toString".
      excludeFieldNames - The field names to exclude
      Returns:
      The toString value.
    • getExcludeFieldNames

      public String[] getExcludeFieldNames()
      Deprecated.
      Returns:
      Returns the excludeFieldNames.
    • getUpToClass

      public Class getUpToClass()
      Deprecated.

      Gets the last super class to stop appending fields for.

      Returns:
      The last super class to stop appending fields for.
    • isAppendStatics

      public boolean isAppendStatics()
      Deprecated.

      Gets whether or not to append static fields.

      Returns:
      Whether or not to append static fields.
      Since:
      2.1
    • isAppendTransients

      public boolean isAppendTransients()
      Deprecated.

      Gets whether or not to append transient fields.

      Returns:
      Whether or not to append transient fields.
    • reflectionAppendArray

      public ToStringBuilder reflectionAppendArray(Object array)
      Deprecated.

      Append to the toString an Object array.

      Parameters:
      array - the array to add to the toString
      Returns:
      this
    • setAppendStatics

      public void setAppendStatics(boolean appendStatics)
      Deprecated.

      Sets whether or not to append static fields.

      Parameters:
      appendStatics - Whether or not to append static fields.
      Since:
      2.1
    • setAppendTransients

      public void setAppendTransients(boolean appendTransients)
      Deprecated.

      Sets whether or not to append transient fields.

      Parameters:
      appendTransients - Whether or not to append transient fields.
    • setExcludeFieldNames

      public ReflectionToStringBuilder setExcludeFieldNames(String[] excludeFieldNamesParam)
      Deprecated.
      Sets the field names to exclude.
      Parameters:
      excludeFieldNamesParam - The excludeFieldNames to excluding from toString or null.
      Returns:
      this
    • setUpToClass

      public void setUpToClass(Class clazz)
      Deprecated.

      Sets the last super class to stop appending fields for.

      Parameters:
      clazz - The last super class to stop appending fields for.
    • toString

      public String toString()
      Deprecated.

      Gets the String built by this builder.

      Overrides:
      toString in class ToStringBuilder
      Returns:
      the built string