Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及技巧
发布时间:2021-11-24 16:53:11 所属栏目:教程 来源:互联网
导读:Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。 /* *这个类可以根据 给定的一个Class字节码文件获取类的所有信息 * 编写者:xiaowei * 这个例子仅仅作为反射的练手 * 喜欢的朋友继续完善 * 只是获得了所有访问权限但是没哟觉得而每个成
Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。 /* *这个类可以根据 给定的一个Class字节码文件获取类的所有信息 * 编写者:xiaowei * 这个例子仅仅作为反射的练手 * 喜欢的朋友继续完善 * 只是获得了所有访问权限但是没哟觉得而每个成员的权限类型 * */ import java.lang.reflect.*; public final class FindClass { private String fieldList ; //成员列表 private String methodList ; //方法列表 private String className;//类的名字 private String showClassInfo; //输出信息 public void getClassField() throws Exception//获得类的字段 { Field[] f=Class.forName(className).getDeclaredFields() ; for(Field tem:f) //迭代for循环 { tem.setAccessible(true) ; this.fieldList+=(tem.getType().getName()+" "+ tem.getName()+";n"); } } public void getClassMethod() throws Exception //获得类的方法 { Method[] m=Class.forName(className).getDeclaredMethods() ;//获得类的所有定义方法 for(Method tem:m) { String prm="" ;//参数列表 tem.setAccessible(true) ; Class[] pt=tem.getParameterTypes() ; for(Class a:pt) { prm+=(a.getName()+",") ; } if(prm.equals("")==false) prm=prm.substring(0,prm.length()-1); this.methodList+=(tem.getReturnType().getName()+" "+tem.getName()+"(" +prm +");n" ) ; } } public void showClassInfo() //输出类的信息 { System.out.println(this.fieldList); System.out.println(this.methodList); } public void getClassInfo() throws Exception //获得类的信息 { this.getClassField() ; this.getClassMethod() ; } public void loadClassForname(String classname)throws Exception//加载类的名字 { this.initClassInfo() ; this.className=classname; getClassInfo() ; } public void initClassInfo() //初始化 { this.methodList="Method List:n" ; this.fieldList="Field List:n" ; this.className="" ; this.showClassInfo="" ; } public static void main(String []args) throws Exception { FindClass cls =new FindClass() ; cls.loadClassForname("java.lang.String"); //加载一个类 cls.showClassInfo() ;//显示类成员 } } class Me { int a ; int b ; void c(int a,int c) { } void aa(int a) { } } ![]() (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |