JAVA 反射练习 打印指定类名的所有信息
给定类名,打印关于类的所有信息
import java.lang.reflect.*; import javax.activation.FileDataSource; public class ReflactionTest { public ReflactionTest() { } public static void print(String s){ System.out.print(s); } public static void println(String s){ System.out.println(s); } public static void main(String[]args) { String name="java.awt.Button"; try { Class cl=Class.forName(name); Class supercl=cl.getSuperclass(); String clmodifiers=Modifier.toString(cl.getModifiers()); if(clmodifiers.length()>0) print(clmodifiers+" "); print(name+" "); if(supercl!=null&&supercl!=Object.class) println("extends "+supercl.getName()); println("{"); printField(cl); println(""); printConstructor(cl); println(""); printMethods(cl); println("}"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } //打印所有构造器信息 public static void printConstructor(Class cl) { Constructor[]constructors=cl.getConstructors(); for(Constructor c:constructors) { String name=c.getName(); print("\t"); String modifer=Modifier.toString(c.getModifiers()); if(modifer.length()>0) print(modifer+" "); print(name+"("); Class []parmTypes=c.getParameterTypes(); for(int i=0;i<parmTypes.length;i++) { if(i>0)print(", "); print(parmTypes[i].getTypeName()); } println(");"); } } //打印所有方法信息 public static void printMethods(Class cl) { Method []methods=cl.getDeclaredMethods(); for(Method c:methods) { String name=c.getName(); print("\t"); String modifer=Modifier.toString(c.getModifiers()); if(modifer.length()>0) print(modifer+" "); print(name+"("); Class []parmTypes=c.getParameterTypes(); for(int i=0;i<parmTypes.length;i++) { if(i>0)print(", "); print(parmTypes[i].getTypeName()); } println(");"); } } //打印类域信息 public static void printField(Class cl) { Field []fields=cl.getFields(); for(Field f:fields) { Class typeClass=f.getType(); String name=f.getName(); print("\t"); String modifier=Modifier.toString(f.getModifiers()); if(modifier.length()>0) print(modifier+" "); println(typeClass.getName()+" "+name+" "); } } }
版权声明:本文为博主原创文章,未经博主允许不得转载。