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

简介: /*  *这个类可以根据 给定的一个Class字节码文件获取类的所有信息  *  编写者:xiaowei   *  这个例子仅仅作为反射的练手  *  喜欢的朋友继续完善  *  只是获得了所有访问权限但是没哟觉得而每个成员的权限类型  *  */ import java.

/*
 *这个类可以根据 给定的一个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)
 {
  
 }
}
 
 

 

目录
相关文章
|
15天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
16天前
|
缓存 算法 Java
Java内存管理与调优:释放应用潜能的关键
【4月更文挑战第2天】Java内存管理关乎性能与稳定性。理解JVM内存结构,如堆和栈,是优化基础。内存泄漏是常见问题,需谨慎管理对象生命周期,并使用工具如VisualVM检测。有效字符串处理、选择合适数据结构和算法能提升效率。垃圾回收自动回收内存,但策略调整影响性能,如选择不同类型的垃圾回收器。其他优化包括调整堆大小、使用对象池和缓存。掌握这些技巧,开发者能优化应用,提升系统性能。
|
15天前
|
Java
深入理解Java并发编程:线程池的应用与优化
【4月更文挑战第3天】 在Java并发编程中,线程池是一种重要的资源管理工具,它能有效地控制和管理线程的数量,提高系统性能。本文将深入探讨Java线程池的工作原理、应用场景以及优化策略,帮助读者更好地理解和应用线程池。
|
8天前
|
Java
Java中ReentrantLock中tryLock()方法加锁分析
Java中ReentrantLock中tryLock()方法加锁分析
10 0
|
22天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
在开发高性能的Android应用时,选择合适的编程语言至关重要。近年来,Kotlin因其简洁性和功能性受到开发者的青睐,但其性能是否与传统的Java相比有所不足?本文通过对比分析Kotlin与Java在Android平台上的运行效率,揭示二者在编译速度、运行时性能及资源消耗方面的具体差异,并探讨在实际项目中如何做出最佳选择。
17 4
|
24天前
|
数据采集 分布式计算 大数据
Java语言在大数据处理中的应用
传统的大数据处理往往依赖于庞大的数据中心和高性能的服务器,然而随着大数据时代的到来,Java作为一种强大的编程语言正在被广泛应用于大数据处理领域。本文将探讨Java语言在大数据处理中的优势和应用,以及其在分布式计算、数据处理和系统集成等方面的重要作用。
|
6天前
|
Java
探秘jstack:解决Java应用线程问题的利器
探秘jstack:解决Java应用线程问题的利器
14 1
探秘jstack:解决Java应用线程问题的利器
|
6天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
10 0
|
6天前
|
Java
代码的魔法师:Java反射工厂模式详解
代码的魔法师:Java反射工厂模式详解
18 0
|
8天前
|
安全 Java
append在Java中是哪个类下的方法
append在Java中是哪个类下的方法
21 9