一个类,进入到内存,对这个类进行解剖
直接获取成员运行
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)运行获取到的方法
对象,调用方法中实际传递的参数 |
|