使用反射打印一个类的所有信息

package com.other.example; import java.lang.reflect.Constructor; import java.lang.reflect.Modifier; import java.util.Scanner; import java.lang.reflect.Method; import java.lang.reflect.Field; /** *使用反射打印一个类的所有信息 */ class ReflectionTest { public static void main(String[] args) { //从命令行参数读取一个类名或用户输入 String name; if (args.length > 0) { name = args[0]; } else { Scanner in = new Scanner(System.in); System.out.println("输入一个类名 如:java.util.Date"); name = in.next(); } try { Class cl = Class.forName(name); Class supercl = cl.getSuperclass(); String modifiers = Modifier.toString(cl.getModifiers()); if (modifiers.length() > 0) { System.out.print(modifiers + " "); } System.out.print("Class " + name); if (supercl != null && supercl != Object.class) { System.out.print(" extends " + supercl.getName()); } System.out.print("/n{/n"); printConstructors(cl); System.out.println(); printMethods(cl); System.out.println(); printFields(cl); System.out.println("}"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.exit(0); } /** *打印类的所有构造函数 */ public static void printConstructors(Class cl) { Constructor[] constructors = cl.getDeclaredConstructors(); for (Constructor c : constructors) { String name = c.getName(); System.out.print(" "); String modifiers = Modifier.toString(c.getModifiers()); if (modifiers.length() > 0) { System.out.print(modifiers + " "); } System.out.print(name + "("); //打印参数列表 Class[] paramTypes = c.getParameterTypes(); for (int j = 0; j < paramTypes.length; j++) { if (j > 0) { System.out.print(", "); } System.out.print(paramTypes[j].getName()); } System.out.println(");"); } } /** *打印所有方法 */ public static void printMethods(Class cl) { Method[] methods = cl.getDeclaredMethods(); for (Method m : methods) { Class retType = m.getReturnType(); String name = m.getName(); System.out.print(" "); String modifiers = Modifier.toString(m.getModifiers()); if (modifiers.length() > 0) { System.out.print(modifiers + " "); } System.out.print(retType.getName() + " " + name + "("); //打印参数列表 Class[] paramTypes = m.getParameterTypes(); for (int j = 0; j < paramTypes.length; j++) { if (j > 0) { System.out.print(", "); } System.out.print(paramTypes[j].getName()); } System.out.println(");"); } } /** *打印所有属性 */ public static void printFields(Class cl) { Field[] fields = cl.getDeclaredFields(); for (Field f : fields) { Class type = f.getType(); String name = f.getName(); System.out.print(" "); String modifiers = Modifier.toString(f.getModifiers()); if (modifiers.length() > 0) { System.out.print(modifiers + " "); } System.out.println(type.getName() + " " + name + ";"); } } }

你可能感兴趣的:(Java代码,string,class,constructor,methods,null,c)