Some random utility routines that have been lying around unchecked in for
the amazing many months. git-svn-id: https://samskivert.googlecode.com/svn/trunk@1403 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -1,8 +1,28 @@
|
||||
//
|
||||
// $Id: ObjectUtil.java,v 1.1 2003/08/18 21:53:59 ray Exp $
|
||||
// $Id: ObjectUtil.java,v 1.2 2004/02/25 13:19:49 mdb Exp $
|
||||
//
|
||||
// samskivert library - useful routines for java programs
|
||||
// Copyright (C) 2001 Michael Bayne
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it
|
||||
// under the terms of the GNU Lesser General Public License as published
|
||||
// by the Free Software Foundation; either version 2.1 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
package com.samskivert.util;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.io.PrintStream;
|
||||
|
||||
/**
|
||||
* Utility methods that don't fit anywhere else.
|
||||
*/
|
||||
@@ -15,4 +35,70 @@ public class ObjectUtil
|
||||
{
|
||||
return (o1 == null) ? (o2 == null) : o1.equals(o2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dumps the contents of the supplied object instance, listing the
|
||||
* class name, hash code and <code>toString()</code> data for each
|
||||
* field in the supplied object and then dumps each field in turn.
|
||||
*/
|
||||
public static void dumpInstance (PrintStream out, Object object)
|
||||
{
|
||||
dumpInstance(out, object, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dumps the contents of the supplied object instance, listing the
|
||||
* class name, hash code and optionally, the <code>toString()</code>
|
||||
* data for each field in the supplied object and then dumps each
|
||||
* field in turn.
|
||||
*/
|
||||
public static void dumpInstance (PrintStream out, Object object,
|
||||
boolean includeToString)
|
||||
{
|
||||
dumpInstance(out, object, includeToString, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function.
|
||||
*/
|
||||
protected static void dumpInstance (
|
||||
PrintStream out, Object object, boolean includeToString, String indent)
|
||||
{
|
||||
// summarize the current object
|
||||
summarizeObject(out, object, includeToString, indent);
|
||||
// increment the indentation level
|
||||
indent += " ";
|
||||
// summarize the object's fields
|
||||
Field[] fields = object.getClass().getDeclaredFields();
|
||||
for (int i = 0; i < fields.length; i++) {
|
||||
try {
|
||||
Object field = fields[i].get(object);
|
||||
dumpInstance(out, field, includeToString, indent);
|
||||
} catch (Exception e) {
|
||||
out.println(indent + "*** unable to fetch field " +
|
||||
"[field=" + fields[i] + ", error=" + e + "]");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints out the object class name, hash code and optionally the
|
||||
* <code>toString()</code> data for the supplied object.
|
||||
*
|
||||
* @param out the print stream on which to dump the object.
|
||||
* @param object the object to be dumped.
|
||||
* @param includeToString true if the result of {@link
|
||||
* Object#toString} should be included in the output.
|
||||
* @param prefix a prefix to prepend to the output.
|
||||
*/
|
||||
public static void summarizeObject (
|
||||
PrintStream out, Object object, boolean includeToString, String prefix)
|
||||
{
|
||||
out.print(prefix + object.getClass().getName());
|
||||
out.print(" [" + object.hashCode());
|
||||
if (includeToString) {
|
||||
out.print(", " + object.toString());
|
||||
}
|
||||
out.println("]");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user