package com.babel17.java; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Member; import static java.lang.System.out; import com.google.appengine.api.datastore.*; public class TestReflection { public static void main(String args[]) throws Exception { //Class c = Class.forName("java.util.ArrayList"); //Class c = Class.forName("com.babel17.java.TestClass"); Class c = Class.forName("com.babel17.java.JavaInteropUnittestHelper$Inner"); //Class c = Class.forName("com.google.appengine.api.datastore.Query"); /*Constructor constr = c.getConstructor(new Class[]{int.class}); Method m = c.getMethod("varargs", new Class[]{String.class, int[].class}); Object o = constr.newInstance(new Object[]{new Integer(12)}); m.invoke(o, "hello", new int[] {7, 4, 9, 12, 34, new Integer(33)}); */ printMembers(c.getConstructors(), "Constructors"); printMembers(c.getFields(), "Fields"); printMembers(c.getMethods(), "Methods"); printClasses(c); } private static void printMembers(Member[] mbrs, String s) { out.format("%s:%n", s); for (Member mbr : mbrs) { if (mbr instanceof Field) { out.format(" %s%n", ((Field) mbr).toGenericString()); } else if (mbr instanceof Constructor) { out.format(" %s%n", ((Constructor) mbr).toGenericString()); } else if (mbr instanceof Method) { out.format(" %s%n", ((Method) mbr).toGenericString()); } out.format(" %s%n", mbr.getName()); } if (mbrs.length == 0) { out.format(" -- No %s --%n", s); } out.format("%n"); } private static void printClasses(Class<?> c) { out.format("Classes:%n"); Class<?>[] clss = c.getClasses(); for (Class<?> cls : clss) { out.format(" %s%n", cls.getName()); } if (clss.length == 0) { out.format(" -- No member interfaces, classes, or enums --%n"); } out.format("%n"); } }