Package 

Class ToStringBuilder

  • All Implemented Interfaces:
    external.org.apache.commons.lang3.builder.Builder

    
    public class ToStringBuilder
     implements Builder<String>
                        

    Assists in implementing toString methods.

    This class enables a good and consistent toString() to be built for any class or object. This class aims to simplify the process by:

    • allowing field names
    • handling all types consistently
    • handling nulls consistently
    • outputting arrays and multi-dimensional arrays
    • enabling the detail level to be controlled for Objects and Collections
    • handling class hierarchies

    To use this class write code as follows:

    public class Person {
      String name;
      int age;
      boolean smoker;
    
      ...
    
      public String toString() {
        return new ToStringBuilder(this).
          append("name", name).
          append("age", age).
          append("smoker", smoker).
          toString();
      }
    }
    

    This will produce a toString of the format: Person@7f54[name=Stephen,age=29,smoker=false]

    To add the superclass toString, use appendSuper. To append the toString from an object that is delegated to (or any other object), use appendToString.

    Alternatively, there is a method that uses reflection to determine the fields to test. Because these fields are usually private, the method, reflectionToString, uses AccessibleObject.setAccessible to change the visibility of the fields. This will fail under a security manager, unless the appropriate permissions are set up correctly. It is also slower than testing explicitly.

    A typical invocation for this method would look like:

    public String toString() {
      return ToStringBuilder.reflectionToString(this);
    }
    

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

    System.out.println("An object: " + ToStringBuilder.reflectionToString(anObject));
    

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

    • Constructor Detail

      • ToStringBuilder

        ToStringBuilder(Object object)
        Constructs a builder for the specified object using the default output style.
        Parameters:
        object - the Object to build a toString for, not recommended to be null
      • ToStringBuilder

        ToStringBuilder(Object object, ToStringStyle style)
        Constructs a builder for the specified object using the a defined output style.
        Parameters:
        object - the Object to build a toString for, not recommended to be null
        style - the style of the toString to create, null uses the default style
      • ToStringBuilder

        ToStringBuilder(Object object, ToStringStyle style, StringBuffer buffer)
        Constructs a builder for the specified object.
        Parameters:
        object - the Object to build a toString for, not recommended to be null
        style - the style of the toString to create, null uses the default style
        buffer - the StringBuffer to populate, may be null
    • Method Detail

      • getDefaultStyle

         static ToStringStyle getDefaultStyle()

        Gets the default ToStringStyle to use.

        This method gets a singleton default value, typically for the whole JVM.Changing this default should generally only be done during application startup.It is recommended to pass a ToStringStyle to the constructor insteadof using this global default.

        This method can be used from multiple threads.Internally, a volatile variable is used to provide the guaranteethat the latest value set using setDefaultStyle is the value returned.It is strongly recommended that the default style is only changed during application startup.

        One reason for changing the default could be to have a verbose style duringdevelopment and a compact style in production.

      • setDefaultStyle

         static void setDefaultStyle(ToStringStyle style)

        Sets the default ToStringStyle to use.

        This method sets a singleton default value, typically for the whole JVM.Changing this default should generally only be done during application startup.It is recommended to pass a ToStringStyle to the constructor insteadof changing this global default.

        This method is not intended for use from multiple threads.Internally, a volatile variable is used to provide the guaranteethat the latest value set is the value returned from getDefaultStyle.

        Parameters:
        style - the default ToStringStyle
      • reflectionToString

         static String reflectionToString(Object object)

        Uses ReflectionToStringBuilder to generate atoString for the specified object.

        Parameters:
        object - the Object to be output
      • reflectionToString

         static String reflectionToString(Object object, ToStringStyle style)

        Uses ReflectionToStringBuilder to generate atoString for the specified object.

        Parameters:
        object - the Object to be output
        style - the style of the toString to create, may be null
      • reflectionToString

         static String reflectionToString(Object object, ToStringStyle style, boolean outputTransients)

        Uses ReflectionToStringBuilder to generate atoString for the specified object.

        Parameters:
        object - the Object to be output
        style - the style of the toString to create, may be null
        outputTransients - whether to include transient fields
      • reflectionToString

         static <T> String reflectionToString(T object, ToStringStyle style, boolean outputTransients, Class<out Object> reflectUpToClass)

        Uses ReflectionToStringBuilder to generate atoString for the specified object.

        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
      • append

         ToStringBuilder append(boolean value)

        Append to the toString a booleanvalue.

        Parameters:
        value - the value to add to the toString
      • append

         ToStringBuilder append(Array<boolean> array)

        Append to the toString a booleanarray.

        Parameters:
        array - the array to add to the toString
      • append

         ToStringBuilder append(byte value)

        Append to the toString a bytevalue.

        Parameters:
        value - the value to add to the toString
      • append

         ToStringBuilder append(Array<byte> array)

        Append to the toString a bytearray.

        Parameters:
        array - the array to add to the toString
      • append

         ToStringBuilder append(char value)

        Append to the toString a charvalue.

        Parameters:
        value - the value to add to the toString
      • append

         ToStringBuilder append(Array<char> array)

        Append to the toString a chararray.

        Parameters:
        array - the array to add to the toString
      • append

         ToStringBuilder append(double value)

        Append to the toString a doublevalue.

        Parameters:
        value - the value to add to the toString
      • append

         ToStringBuilder append(Array<double> array)

        Append to the toString a doublearray.

        Parameters:
        array - the array to add to the toString
      • append

         ToStringBuilder append(float value)

        Append to the toString a floatvalue.

        Parameters:
        value - the value to add to the toString
      • append

         ToStringBuilder append(Array<float> array)

        Append to the toString a floatarray.

        Parameters:
        array - the array to add to the toString
      • append

         ToStringBuilder append(int value)

        Append to the toString an intvalue.

        Parameters:
        value - the value to add to the toString
      • append

         ToStringBuilder append(Array<int> array)

        Append to the toString an intarray.

        Parameters:
        array - the array to add to the toString
      • append

         ToStringBuilder append(long value)

        Append to the toString a longvalue.

        Parameters:
        value - the value to add to the toString
      • append

         ToStringBuilder append(Array<long> array)

        Append to the toString a longarray.

        Parameters:
        array - the array to add to the toString
      • append

         ToStringBuilder append(short value)

        Append to the toString a shortvalue.

        Parameters:
        value - the value to add to the toString
      • append

         ToStringBuilder append(Array<short> array)

        Append to the toString a shortarray.

        Parameters:
        array - the array to add to the toString
      • append

         ToStringBuilder append(String fieldName, boolean value)

        Append to the toString a booleanvalue.

        Parameters:
        fieldName - the field name
        value - the value to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<boolean> array)

        Append to the toString a booleanarray.

        Parameters:
        fieldName - the field name
        array - the array to add to the hashCode
      • append

         ToStringBuilder append(String fieldName, Array<boolean> array, boolean fullDetail)

        Append to the toString a booleanarray.

        A boolean parameter controls the level of detail to show.Setting true will output the array in full. Settingfalse will output a summary, typically the size ofthe array.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
        fullDetail - true for detail, falsefor summary info
      • append

         ToStringBuilder append(String fieldName, byte value)

        Append to the toString an bytevalue.

        Parameters:
        fieldName - the field name
        value - the value to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<byte> array)

        Append to the toString a byte array.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<byte> array, boolean fullDetail)

        Append to the toString a bytearray.

        A boolean parameter controls the level of detail to show.Setting true will output the array in full. Settingfalse will output a summary, typically the size ofthe array.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
        fullDetail - true for detail, falsefor summary info
      • append

         ToStringBuilder append(String fieldName, char value)

        Append to the toString a charvalue.

        Parameters:
        fieldName - the field name
        value - the value to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<char> array)

        Append to the toString a chararray.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<char> array, boolean fullDetail)

        Append to the toString a chararray.

        A boolean parameter controls the level of detail to show.Setting true will output the array in full. Settingfalse will output a summary, typically the size ofthe array.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
        fullDetail - true for detail, falsefor summary info
      • append

         ToStringBuilder append(String fieldName, double value)

        Append to the toString a doublevalue.

        Parameters:
        fieldName - the field name
        value - the value to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<double> array)

        Append to the toString a doublearray.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<double> array, boolean fullDetail)

        Append to the toString a doublearray.

        A boolean parameter controls the level of detail to show.Setting true will output the array in full. Settingfalse will output a summary, typically the size ofthe array.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
        fullDetail - true for detail, falsefor summary info
      • append

         ToStringBuilder append(String fieldName, float value)

        Append to the toString an floatvalue.

        Parameters:
        fieldName - the field name
        value - the value to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<float> array)

        Append to the toString a floatarray.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<float> array, boolean fullDetail)

        Append to the toString a floatarray.

        A boolean parameter controls the level of detail to show.Setting true will output the array in full. Settingfalse will output a summary, typically the size ofthe array.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
        fullDetail - true for detail, falsefor summary info
      • append

         ToStringBuilder append(String fieldName, int value)

        Append to the toString an intvalue.

        Parameters:
        fieldName - the field name
        value - the value to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<int> array)

        Append to the toString an intarray.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<int> array, boolean fullDetail)

        Append to the toString an intarray.

        A boolean parameter controls the level of detail to show.Setting true will output the array in full. Settingfalse will output a summary, typically the size ofthe array.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
        fullDetail - true for detail, falsefor summary info
      • append

         ToStringBuilder append(String fieldName, long value)

        Append to the toString a longvalue.

        Parameters:
        fieldName - the field name
        value - the value to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<long> array)

        Append to the toString a longarray.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<long> array, boolean fullDetail)

        Append to the toString a longarray.

        A boolean parameter controls the level of detail to show.Setting true will output the array in full. Settingfalse will output a summary, typically the size ofthe array.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
        fullDetail - true for detail, falsefor summary info
      • append

         ToStringBuilder append(String fieldName, Object obj)

        Append to the toString an Objectvalue.

        Parameters:
        fieldName - the field name
        obj - the value to add to the toString
      • append

         ToStringBuilder append(String fieldName, Object obj, boolean fullDetail)

        Append to the toString an Objectvalue.

        Parameters:
        fieldName - the field name
        obj - the value to add to the toString
        fullDetail - true for detail,false for summary info
      • append

         ToStringBuilder append(String fieldName, Array<Object> array)

        Append to the toString an Objectarray.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<Object> array, boolean fullDetail)

        Append to the toString an Objectarray.

        A boolean parameter controls the level of detail to show.Setting true will output the array in full. Settingfalse will output a summary, typically the size ofthe array.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
        fullDetail - true for detail, falsefor summary info
      • append

         ToStringBuilder append(String fieldName, short value)

        Append to the toString an shortvalue.

        Parameters:
        fieldName - the field name
        value - the value to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<short> array)

        Append to the toString a shortarray.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
      • append

         ToStringBuilder append(String fieldName, Array<short> array, boolean fullDetail)

        Append to the toString a shortarray.

        A boolean parameter controls the level of detail to show.Setting true will output the array in full. Settingfalse will output a summary, typically the size ofthe array.

        Parameters:
        fieldName - the field name
        array - the array to add to the toString
        fullDetail - true for detail, falsefor summary info
      • appendSuper

         ToStringBuilder appendSuper(String superToString)

        Append the toString from the superclass.

        This method assumes that the superclass uses the same ToStringStyleas this one.

        If superToString is null, no change is made.

        Parameters:
        superToString - the result of super.toString()
      • appendToString

         ToStringBuilder appendToString(String toString)

        Append the toString from another object.

        This method is useful where a class delegates most of the implementation ofits properties to another class. You can then call toString() onthe other class and pass the result into this method.

          private AnotherObject delegate;
          private String fieldInThisClass;
        
          public String toString() {
            return new ToStringBuilder(this).
              appendToString(delegate.toString()).
              append(fieldInThisClass).
              toString();
          }

        This method assumes that the other object uses the same ToStringStyleas this one.

        If the toString is null, no change is made.

        Parameters:
        toString - the result of toString() on another object
      • toString

         String toString()

        Returns the built toString.

        This method appends the end of data indicator, and can only be called once.Use getStringBuffer to get the current string state.

        If the object is null, return the style's nullText

      • build

         String build()

        Returns the String that was build as an object representation. Thedefault implementation utilizes the toString implementation.