Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。
2012-01-15 23:38
726 查看
/*
*这个类可以根据 给定的一个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)
{
}
}
*这个类可以根据 给定的一个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反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。
- Java反射的高级应用,模拟开发环境IDE动态搜索类成员以及方法,。。。。。
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- C#高级应用-反射动态调用类的成员范例代码
- JAVAWEB开发之Servlet3.0新特性的使用以及注解的详细使用和自定义注解的方法、动态代理的使用、利用动态代理实现细粒度的权限控制以及类加载和泛型反射
- C# 高级应用--反射动态调用类的成员范例 !
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- 【Java-Reflection】Class以及反射成员变量和方法
- java开发之构造方法的反射应用
- java开发之成员变量及成员方法的反射
- java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。
- 软件开发工程师(JAVA)中级考试大纲之--五 J2EE WEB高级组件开发--(三)Tomcat服务器的环境及配置;应用发布和数据源配置;
- 关于Java集成开发环境(IDE)---NetBeans的安装,以及Helloworld编写
- Win7 32位系统下Sublime text 3的安装以及配置C/C++、java、python的开发环境方法
- Java Web整合开发(15) -- Struts 1.x 高级应用
- 移动应用开发之Java+Eclipse环境搭建
- Eclipse安装以及集成Java开发环境插件的安装