Java 反射专题

来源:互联网 发布:mac git tower 编辑:程序博客网 时间:2024/05/17 22:46
Java 反射专题


1. Class类
   类是对象,类是java.lang.Class类的实例对象
   表示方法:
   1)第一种表达方式-->实际上告诉我们任何一个类都有一个隐含的静态成员变量class
   Class c1 = 类.class;
   2)第二种表达方式,已经知道该类的对象通过getClass方法
   Class c2 = object.getClass();
   3)第三种表达方式
   Class c3=null;
   c3 = Class.forName(XXX);
   
2. 动态加载类
   Class.forName("类的全称")
   不仅代表了类的类类型,还代表了动态加载类
   编译时刻加载类是静态加载类,运行时刻加载类是动态加载类
   
3. 基本的数据类型
    void关键字都存在类类型   
   
4. 方法的反射
    // 要获取类的信息,首先要获取类的类类型
Class c=obj.getClass();//传递的是哪个子类的对象,c就是该子类的类类型 
// 获取类的名称
c.getName()
// 获取类的方法-->方法也是对象
Method[] ms= c.getMethods();// 获取的是所有public的函数,包括父类继承而来的
Method[] ms= c.getDeclaredMethods();//获取的是自己声明的函数,不限定访问权限
// 得到方法的返回值类型的类类型
Class returnType = ms[i].getReturnType();
// 获取方法的名称
ms[i].getName();
// 获取参数类型--> 得到的是参数列表的类型的类类型
Class[] paramType = ms[i].getParameterTypes();
paramType[i].getName();

5. 成员变量的反射
    // 成员变量也是对象,java.lang.reflect.Field ,封装了关于成员变量的操作
Field[] fs = c.getFields();//获取的是所有public的成员变量,包括从父类继承而来
Field[] fs = c.getDeclaredFields();//获取的是自己声明的成员变量,不限定访问权限
    //获取成员变量的类型的类类型
fs[i].getType.getName()
//成员变量的名称
fs[i].getName()
// 获取成员变量的数值
fs[i].setAccessible(true);
object v= fs[i].get(this);
String value = v.toString
0 0
原创粉丝点击