import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Comparator; public class Analizer { public static Comparator FieldStaticComparator = new Comparator() { public int compare(Field field1, Field field2) { if (Modifier.isStatic(field1.getModifiers())) return -1; if (Modifier.isStatic(field2.getModifiers())) return 1; return 0; } }; public static void analyzeObject(Object obj) { System.out.println("The class of " + obj + " is " + obj.getClass().getName()); Field[] fs = obj.getClass().getDeclaredFields(); Arrays.sort(fs, FieldStaticComparator); for (Field f : fs) { System.out.println("Field: " + f.toString()); //System.out.println("Field: " + (Modifier.isStatic(f.getModifiers()) ? "(static) " : "") + f.getName()); } for (Method m : obj.getClass().getDeclaredMethods()) { if (!Modifier.isStatic(m.getModifiers())) { //System.out.println("Method: " + m.toString()); System.out.print("Method: " + m.getName() + "("); boolean bFirst = true; for (Class t : m.getParameterTypes()) { System.out.print((bFirst ? "" : ",") + t.getName()); if (bFirst) bFirst = !bFirst; } System.out.println(")"); } } } public static void main(String [] args) { analyzeObject(new java.awt.Point()); } }