org.apache.commons.lang.builder
Class ReflectionToStringBuilder
public class ReflectionToStringBuilder
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) && !f.getName().equals("password");
}
}).toString();
}
The exact format of the
toString
is determined by the
ToStringStyle
passed into the constructor.
$Id: ReflectionToStringBuilder.java,v 1.15 2003/12/02 19:11:58
ggregory Exp $- Gary Gregory
- Stephen Colebourne
- Pete Gieser
ReflectionToStringBuilder(Object object) -
Constructor.
|
ReflectionToStringBuilder(Object object, ToStringStyle style) -
Constructor.
|
ReflectionToStringBuilder(Object object, ToStringStyle style, StringBuffer buffer) -
Constructor.
|
ReflectionToStringBuilder(Object object, ToStringStyle style, StringBuffer buffer, Class reflectUpToClass, boolean outputTransients) - Use
ReflectionToStringBuilder(Object,ToStringStyle,StringBuffer,Class,boolean,boolean) .
|
ReflectionToStringBuilder(Object object, ToStringStyle style, StringBuffer buffer, Class reflectUpToClass, boolean outputTransients, boolean outputStatics) - Constructor.
|
protected boolean | accept(Field field) - Returns whether or not to append the given
Field .
|
protected void | appendFieldsIn(Class clazz) -
Appends the fields and values defined by the given object of the given
Class.
|
Class | getUpToClass() -
Gets the last super class to stop appending fields for.
|
protected Object | getValue(Field field) -
Calls
java.lang.reflect.Field.get(Object) .
|
boolean | isAppendStatics() -
Gets whether or not to append static fields.
|
boolean | isAppendTransients() -
Gets whether or not to append transient fields.
|
ToStringBuilder | reflectionAppendArray(Object array) -
Append to the
toString an Object array.
|
void | setAppendStatics(boolean appendStatics) -
Sets whether or not to append static fields.
|
void | setAppendTransients(boolean appendTransients) -
Sets whether or not to append transient fields.
|
void | setUpToClass(Class clazz) -
Sets the last super class to stop appending fields for.
|
String | toString() -
Gets the String built by this builder.
|
static String | toString(Object object) -
This method uses reflection to build a suitable
toString
using the default ToStringStyle .
|
static String | toString(Object object, ToStringStyle style) -
This method uses reflection to build a suitable
toString .
|
static String | toString(Object object, ToStringStyle style, boolean outputTransients) -
This method uses reflection to build a suitable
toString .
|
static String | toString(Object object, ToStringStyle style, boolean outputTransients, Class reflectUpToClass) - Use
toString(Object,ToStringStyle,boolean,boolean,Class)
|
static String | toString(Object object, ToStringStyle style, boolean outputTransients, boolean outputStatics) -
This method uses reflection to build a suitable
toString .
|
static String | toString(Object object, ToStringStyle style, boolean outputTransients, boolean outputStatics, Class reflectUpToClass) -
This method uses reflection to build a suitable
toString .
|
append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , append , appendAsObjectToString , appendSuper , appendToString , getDefaultStyle , getObject , getStringBuffer , getStyle , reflectionToString , reflectionToString , reflectionToString , reflectionToString , setDefaultStyle , toString |
ReflectionToStringBuilder
public ReflectionToStringBuilder(Object object)
Constructor.
This constructor outputs using the default style set with
setDefaultStyle
.
object
- the Object to build a toString
for, must not
be null
ReflectionToStringBuilder
public ReflectionToStringBuilder(Object object,
ToStringStyle style)
Constructor.
If the style is
null
, the default style is used.
object
- the Object to build a toString
for, must not
be null
style
- the style of the toString
to create, may be
null
ReflectionToStringBuilder
public ReflectionToStringBuilder(Object object,
ToStringStyle style,
StringBuffer buffer)
Constructor.
If the style is
null
, the default style is used.
If the buffer is
null
, a new one is created.
object
- the Object to build a toString
forstyle
- the style of the toString
to create, may be
null
buffer
- the StringBuffer
to populate, may be null
ReflectionToStringBuilder
public ReflectionToStringBuilder(Object object,
ToStringStyle style,
StringBuffer buffer,
Class reflectUpToClass,
boolean outputTransients)
Use
ReflectionToStringBuilder(Object,ToStringStyle,StringBuffer,Class,boolean,boolean)
.
Constructor.
object
- the Object to build a toString
forstyle
- 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)
Constructor.
object
- the Object to build a toString
forstyle
- 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 fieldsoutputStatics
- whether to include static fields
accept
protected boolean accept(Field field)
Returns whether or not to append the given
Field
.
field
- The Field to test.
- Whether or not to append the given
Field
.
appendFieldsIn
protected void appendFieldsIn(Class clazz)
Appends the fields and values defined by the given object of the given
Class.
If a cycle is detected as an object is "toString()'ed", such
an object is rendered as if
Object.toString()
had been
called and not implemented by the object.
clazz
- The class of object parameter
getUpToClass
public Class getUpToClass()
Gets the last super class to stop appending fields for.
- The last super class to stop appending fields for.
getValue
protected Object getValue(Field field)
throws IllegalArgumentException,
IllegalAccessException
Calls java.lang.reflect.Field.get(Object)
.
field
- The Field to query.
- The Object from the given Field.
isAppendStatics
public boolean isAppendStatics()
Gets whether or not to append static fields.
- Whether or not to append static fields.
isAppendTransients
public boolean isAppendTransients()
Gets whether or not to append transient fields.
- Whether or not to append transient fields.
reflectionAppendArray
public ToStringBuilder reflectionAppendArray(Object array)
Append to the toString
an Object
array.
array
- the array to add to the toString
setAppendStatics
public void setAppendStatics(boolean appendStatics)
Sets whether or not to append static fields.
appendStatics
- Whether or not to append static fields.
setAppendTransients
public void setAppendTransients(boolean appendTransients)
Sets whether or not to append transient fields.
appendTransients
- Whether or not to append transient fields.
setUpToClass
public void setUpToClass(Class clazz)
Sets the last super class to stop appending fields for.
clazz
- The last super class to stop appending fields for.
toString
public static String toString(Object object)
This method uses reflection to build a suitable
toString
using the default
ToStringStyle
.
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.
object
- the Object to be output
toString
public static String toString(Object object,
ToStringStyle style)
This method uses reflection to build a suitable
toString
.
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.
object
- the Object to be outputstyle
- the style of the toString
to create, may be
null
toString
public static String toString(Object object,
ToStringStyle style,
boolean outputTransients)
This method uses reflection to build a suitable
toString
.
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.
object
- the Object to be outputstyle
- the style of the toString
to create, may be
null
outputTransients
- whether to include transient fields
toString
public static String toString(Object object,
ToStringStyle style,
boolean outputTransients,
Class reflectUpToClass)
Use
toString(Object,ToStringStyle,boolean,boolean,Class)
This method uses reflection to build a suitable
toString
.
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.
object
- the Object to be outputstyle
- the style of the toString
to create, may be
null
outputTransients
- whether to include transient fieldsreflectUpToClass
- the superclass to reflect up to (inclusive), may be null
toString
public static String toString(Object object,
ToStringStyle style,
boolean outputTransients,
boolean outputStatics)
This method uses reflection to build a suitable
toString
.
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.
object
- the Object to be outputstyle
- the style of the toString
to create, may be
null
outputTransients
- whether to include transient fieldsoutputStatics
- whether to include transient fields
toString
public static String toString(Object object,
ToStringStyle style,
boolean outputTransients,
boolean outputStatics,
Class reflectUpToClass)
This method uses reflection to build a suitable
toString
.
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.
object
- the Object to be outputstyle
- the style of the toString
to create, may be
null
outputTransients
- whether to include transient fieldsoutputStatics
- whether to include static fieldsreflectUpToClass
- the superclass to reflect up to (inclusive), may be null
Copyright © 2001-2005 - Apache Software Foundation