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

 

时间: 2024-11-03 13:36:51

Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。的相关文章

利用常用的集成开发环境(IDE)和中间件设计轻量型ESB

本文介绍了实现一个自产的轻量型http://www.aliyun.com/zixun/aggregation/7921.html">企业服务总线 (ESB) 的设计蓝图,该企业服务总线利用了常用的集成开发环境 (IDE) 和中间件.本文中的场景使用了 IBM® WebSphere® Application Server V8(一个用于 Java EE 应用程序的强健的部署环境)和 IBM Rational® Software Architect(提供了工具来设计.开发.测试和打包要部署到应

跟老齐学Python之集成开发环境(IDE)_python

当安装好python之后,其实就已经可以进行开发了.下面我们开始写第一行python代码. 值得纪念的时刻:Hello world 如果是用windows,请打开CMD,并执行python. 如果是UNIX类的,就运行shell,并执行python. 都会出现如下内容: Python 2.7.6 (default, Nov 13 2013, 19:24:16) [GCC 4.6.3] on linux2 Type "help", "copyright", "

Android开发中Listview动态加载数据的方法示例

本文实例讲述了Android开发中Listview动态加载数据的方法.分享给大家供大家参考,具体如下: 最近在研究网络数据加载的问题,比如我有几百,甚至上千条数据,这些数据如果一次性全部加载到arraylist,然后再加载到Listview中.我们必然会去单独开线程来做,这样造成的结果就是会出现等待时间很长,用户体验非常不好.我的想法是动态加载数据,第一次加载十条,然后往下面滑动的时候再追加十条,再往下面滑动的时候再去追加,这样大大减少了用户等待的时间,同时给处理数据留下了时间.网上看到了这样一

利用反射动态调用类成员

动态 (C#)利用反射动态调用类成员 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name, BindingFlags invokeAttr, Binder binder, object target, object[] args ); 参数 name String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串 (""

(C#)利用反射动态调用类成员

动态 (C#)利用反射动态调用类成员 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name, BindingFlags invokeAttr, Binder binder, object target, object[] args ); 参数 name String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串 (""

测试Java Applet内存泄露(非开发环境)

问题描述 我有一个VB.NET开发的桌面程序,里面调用了IE浏览器控件,连接到一个URL,这个URL包含有一个JavaApplet.现在怀疑这个Java小程序有内存泄露的问题,最后导致我的程序运行越来越慢,直到崩溃.但是这个JavaApplet并不是我们开发的,而是国外制造的一个小设备产生的(这个小设备只有一根网线接口,不能接鼠标键盘控制,只知道里面运行了Linux).我如何收集数据,证明这个JavaApplet的对或错呢?我先使用了JProbe和YourKitJavaProfiler,发现它们

工具-有没有 快速搭建,配置 java开发环境的软件

问题描述 有没有 快速搭建,配置 java开发环境的软件 每次换了系统,换了电脑,换了工作环境都要重头装一遍开发工具,配置开发环境,不知道有没有快捷的软件省去这些重复的工作 解决方案 你完全可以用Java_home啊 用不了多少时间 解决方案二: 没有吧,话说用了这么久还觉得配环境麻烦么?没有多少时间啊 解决方案三: JDK与IDE使用绿色版,配置一下路径都是很快的 解决方案四: 偷懒的方式,你可以把环境装在非系统盘,这样换系统的话,可能不需要重新安装环境了.(只格式化系统盘,没问题) 换电脑的

Java开发环境的过去、现在和将来

1995年3月23日,San Jose Mercury News登出一篇题为"Why Sun thinks Hot Java will give you a lift"的文章,在那篇文章里预言Java技术将是下一个重大事件,这个预言现在看来并不仅仅是商家的宣传伎俩,虽然文章是当时Sun的公关经理 Lisa Poulson安排撰写的.从世人知道Java那一刻起到现在,算起来已经过去整整十年,回顾过去的十年值得总结的东西有许多,但在这里笔者只想就Java 开发环境谈些个人的想法与朋友们交流

Java反射机制的学习

Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法). 也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制.你会嗤之以鼻地告诉我,Java反射机制没啥用.或许在J2EE.J2SE等平台,Java反射机制没啥用(具体我也不了解,不多做评论),但是在Android应用开发中,该