设为首页 加入收藏

TOP

Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法
2014-11-24 14:49:09 来源: 作者: 【 】 浏览:35
Tags:Java 反射 高级 应用 模拟 开发 环境 IDE 动态 搜索 成员 以及 方法

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

}
}



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java中ArrayList HashSet的使用 .. 下一篇Android JNI之JAVA域与c域的互操作

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: