黑马程序员技术交流社区

标题: 反射入门2_获得字段 [打印本页]

作者: 游呤人    时间: 2015-7-16 01:28
标题: 反射入门2_获得字段
本帖最后由 游呤人 于 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)来改变语法检查
  1. public class FieldDome {
  2.         public static void main(String[] args) throws Exception{
  3.                 Class clazz = Class.forName("com.refect.Student");
  4.                 Constructor<Student> con = clazz.getDeclaredConstructor(String.class,
  5.                                 int.class, int.class, int.class);
  6.                 Object obj=con.newInstance("张三",90,100,100);
  7.                 //        Properties
  8.                 Field name = clazz.getDeclaredField("age");
  9.                 name.setAccessible(true);
  10.                 name.set(obj, 13);
  11.                 System.out.println(obj);
  12.         }
复制代码







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