01: import java.lang.reflect.*; 02: import java.util.*; 03: 04: /** 05: This program shows how to use reflection to print 06: the names and values of all fields of an object. 07: */ 08: public class FieldTest 09: { 10: public static void main(String[] args) 11: throws IllegalAccessException 12: { 13: String input = "Hello, World!"; 14: StringTokenizer tokenizer = new StringTokenizer(input, ","); 15: System.out.print(spyFields(tokenizer)); 16: tokenizer.nextToken(); 17: System.out.println("\nAfter calling nextToken:\n"); 18: System.out.print(spyFields(tokenizer)); 19: } 20: 21: /** 22: Spies on the field names and values of an object. 23: @param obj the object whose fields to format 24: @return a string containing the names and values of 25: all fields of obj 26: */ 27: public static String spyFields(Object obj) 28: throws IllegalAccessException 29: { 30: StringBuffer buffer = new StringBuffer(); 31: Field[] fields = obj.getClass().getDeclaredFields(); 32: for (int i = 0; i < fields.length; i++) 33: { 34: Field f = fields[i]; 35: f.setAccessible(true); 36: Object value = f.get(obj); 37: buffer.append(f.getType().getName()); 38: buffer.append(" "); 39: buffer.append(f.getName()); 40: buffer.append("="); 41: buffer.append("" + value); 42: buffer.append("\n"); 43: } 44: return buffer.toString(); 45: } 46: }