package de.axone.tools; import java.lang.reflect.Field; public abstract class Inspector { public static void inspect( Object object, String fieldName ) { Class<?> clazz = object.getClass(); try { Field field = clazz.getDeclaredField( fieldName ); Object value = field.get( object ); _inspect( value ); } catch( NoSuchFieldException e ) { throw new Error( "Cannot find '" + fieldName + '\'', e ); } catch( SecurityException | IllegalAccessException e ) { throw new Error( "Cannot access '" + fieldName + '\'', e ); } } public static void inspect( Object object ) { _inspect( object ); } private static void _inspect( Object object ) { StringBuilder out = new StringBuilder(); out.append( "INSPECT: " + object.getClass().getSimpleName() + '\n' ); Class<?> clazz = object.getClass(); Field [] fields = clazz.getDeclaredFields(); for( Field field : fields ) { field.setAccessible(true); try { out.append( field.getName() ) .append( ": \"" ) .append( F.ormat( field.get( object ) ) ) .append( "\"\n" ) ; } catch( IllegalAccessException e ) { throw new Error( "Cannot access '" + field.getName() + '\'', e ); } } E.echo( System.err, 3, true, true, false, out.toString() ); } }