加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

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)
 {
 
 }
}
 

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读