黑马程序员技术交流社区

标题: 反射笔记 [打印本页]

作者: zhousuo28    时间: 2015-5-30 21:18
标题: 反射笔记
一个类,进入到内存,对这个类进行解剖
直接获取成员运行

XXX.class文件进入内存后,产生一个对象,由JVM创建,可以获取
使用这个对象(class文件的对象)方法,解剖这个类

java.lang.Class 类,描述运行时期一个class文件的对象
Class 找获取class文件对象中成员的方法

构造方法,也会被看成一个对象,就有这个对象描述类,用于操作构造方法
java.lang.reflect.Constructor 提供方法操作构造方法

成员变量,也会被看成一个对象,就有这个对象描述类,用于操作成员变量
java.lang.reflect.Field 提供方法操作造变量

成员方法,也会被看成一个对象,有这个对象描述类,用于操作成员方法
java.lang.reflect.Method 提供方法操作成员方法

反射:
  获取一个类的class文件对象  Class类型
  使用Class类中的方法解剖这个class文件
  
  获取出class文件中定义的所有成员,交给不同的对象,进行处理
  
  
  
Class类提供一些获取方法,从一个类的class文件中获取构造方法
  获取 所有的公共权限构造方法
    Constructor[] getConstructors() 返回构造方法对象
    Constructor getConstructor(Class...c) 返回指定的构造方法
   
Constructor 类中有一个方法,可以运行可以到的构造方法
    Object  newInstance(Object...obj)
            运行获取到的指定构造方法,但是传递相对应参数
            


获取成员变量
Class类提供获取方法,从一个类的class文件中获取成员变量

Field[] getFields()
Field   getField(字符串的变量名) 获取指定变量

Field类方法
void set(Object obj, Object value) 修改成员变量值


获取成员方法
  Class类提供获取方法,从一个类的class文件中获取成员方法
      自己的,继承,实现的 public权限
      
  Method[] getMethods()获取全部公共方法,包括继承的
  Method   getMethod(字符串方法名,Class...c)获取指定的方法
  
Method类方法
  invoke(Object obj, Object...o)运行获取到的方法
     对象,调用方法中实际传递的参数




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2