Add support for custom toString() methods on a per-field basis. It's slow,
but it's damned cool! git-svn-id: https://samskivert.googlecode.com/svn/trunk@1049 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: StringUtil.java,v 1.54 2003/02/04 03:01:28 mdb Exp $
|
// $Id: StringUtil.java,v 1.55 2003/02/05 00:20:35 mdb Exp $
|
||||||
//
|
//
|
||||||
// samskivert library - useful routines for java programs
|
// samskivert library - useful routines for java programs
|
||||||
// Copyright (C) 2001 Michael Bayne
|
// Copyright (C) 2001 Michael Bayne
|
||||||
@@ -25,6 +25,7 @@ import java.awt.geom.Point2D;
|
|||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
|
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
@@ -503,7 +504,7 @@ public class StringUtil
|
|||||||
Field[] fields = clazz.getFields();
|
Field[] fields = clazz.getFields();
|
||||||
int written = 0;
|
int written = 0;
|
||||||
|
|
||||||
// we only want non-static, non-final, non-transient fields
|
// we only want non-static fields
|
||||||
for (int i = 0; i < fields.length; i++) {
|
for (int i = 0; i < fields.length; i++) {
|
||||||
int mods = fields[i].getModifiers();
|
int mods = fields[i].getModifiers();
|
||||||
if ((mods & Modifier.PUBLIC) == 0 ||
|
if ((mods & Modifier.PUBLIC) == 0 ||
|
||||||
@@ -515,9 +516,16 @@ public class StringUtil
|
|||||||
buf.append(sep);
|
buf.append(sep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// look for a toString() method for this field
|
||||||
buf.append(fields[i].getName()).append("=");
|
buf.append(fields[i].getName()).append("=");
|
||||||
try {
|
try {
|
||||||
toString(buf, fields[i].get(object));
|
try {
|
||||||
|
Method meth = clazz.getMethod(
|
||||||
|
fields[i].getName() + "ToString", new Class[0]);
|
||||||
|
buf.append(meth.invoke(object, null));
|
||||||
|
} catch (NoSuchMethodException nsme) {
|
||||||
|
toString(buf, fields[i].get(object));
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
buf.append("<error: " + e + ">");
|
buf.append("<error: " + e + ">");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user