import java.util.*; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; public class ReflectionTest { @SuppressWarnings("unchecked") public static void main(String[] args){ String className ; Scanner in = new Scanner(System.in); className = in.next(); try { Class c = Class.forName(className); Class superc = c.getSuperclass(); String modifiers = Modifier.toString(c.getModifiers()); if(modifiers.length() > 0 ) System.out.print(modifiers + " "); System.out.print(c.getName() + " extends "); if(superc != null && superc != Object.class) System.out.println(superc.getName() + "{"); System.out.println(); printStructor(c); printMethod(c); printFields(c); } catch (Exception e) { } } @SuppressWarnings("unchecked") public static void printStructor(Class cl){ Constructor[] constructor = cl.getDeclaredConstructors(); for(Constructor c : constructor){ String name = c.getName(); String modifier = Modifier.toString(c.getModifiers()); System.out.print("\t" + modifier + " " + name + "("); Class[] paramType = c.getParameterTypes(); for(int i=0;i<paramType.length;i++){ if(i > 0){ System.out.print(","); } System.out.print(paramType[i].getName()); } System.out.println(");\n"); } } @SuppressWarnings("unchecked") public static void printMethod(Class cl){ Method[] method = cl.getDeclaredMethods(); for(Method m : method){ Class retType = m.getReturnType(); String modifier = Modifier.toString(cl.getModifiers()); String name = m.getName(); System.out.print("\t" + modifier + " " + retType.getName() + " " + name + "("); Class[] clazz = m.getParameterTypes(); for(int i=0;i<clazz.length;i++){ if(i > 0){ System.out.print(","); } System.out.print(clazz[i].getName()); } System.out.println(");\n"); } } public static void printFields(Class cl){ Field[] f = cl.getDeclaredFields(); for(int i=0;i<f.length;i++){ String modifier = Modifier.toString(f[i].getModifiers()); Class type = f[i].getType(); System.out.println("\t" + modifier + " " + type.getName() + " " + f[i].getName() + ";\n"); } System.out.println("}"); } }
java反射读取一个类
最新推荐文章于 2022-03-13 13:28:16 发布