Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.5, 3.0.1
-
None
-
Linux Ubuntu
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
Description
I have a simple class 'A' defined as follows:
======================================
public class A {
int p1;
String p2;
B b;
}
======================================
While I execute the following instructions:
ToStringBuilder builder = new ReflectionToStringBuilder(a);
System.out.println(builder.toString());
The output is:
A@3ea981ca[p1=0,p2=<null>,b=B@1ee7b241]
that's normal, without recursion
So, I defined my own style, for recursive toString-ing display:
======================================
class MyStyle extends ToStringStyle {
private final static ToStringStyle instance = new MyStyle();
public MyStyle()
{ setArrayContentDetail(true); setUseShortClassName(true); setUseClassName(true); setUseIdentityHashCode(true); setFieldSeparator(", "); }public static ToStringStyle getInstance()
{ return instance; };
@Override
public void appendDetail(final StringBuffer buffer, final String fieldName, final Object value) {
if (!value.getClass().getName().startsWith("java"))
else
{ super.appendDetail(buffer, fieldName, value); }}
@Override
public void appendDetail(final StringBuffer buffer, final String fieldName, final Collection value)
}
======================================
When I use my custom MyStyle:
String s = ReflectionToStringBuilder.toString(a, MyStyle.getInstance());
System.out.println(s);
The output is:
A@3ea981ca[p1=0, p2=<null>, b=byte@1ee7b241[p4=234]]
So, the name of the class 'B' is not displayed.
I expected something like: b=B@1ee7b241[p4=234]
Instead, the name of the class 'B' is replaced with 'byte'.
I don't know why.