本帖最后由 游呤人 于 2015-7-16 01:31 编辑
在获得了字节码和构造器之后我们应该获得该类的成员变量了
Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。
反射的字段可能是一个类(静态)字段或实例字段。
那么如何获取呢?
Field:getDeclaredField(String name)| {getField(String name) 只能获得公共成员变量 }
Field[]:getDeclaredFields() | { getFields() 只能获得公共成员变量数组 }
赋值 : void Field.set(Object obj, Object value) //参数obj 表示要赋值的实例, value表示该值
私有变量不能直接访问,但是可以通过设置父类的
public void setAccessible(boolean flag)来改变语法检查- public class FieldDome {
- public static void main(String[] args) throws Exception{
- Class clazz = Class.forName("com.refect.Student");
- Constructor<Student> con = clazz.getDeclaredConstructor(String.class,
- int.class, int.class, int.class);
- Object obj=con.newInstance("张三",90,100,100);
- // Properties
- Field name = clazz.getDeclaredField("age");
- name.setAccessible(true);
- name.set(obj, 13);
- System.out.println(obj);
- }
复制代码
|
|