A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 路途 中级黑马   /  2015-7-14 12:59  /  256 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Field类代表某个类的一个成员变量
  它的获取与构造函数类似,先获得这个类中成员变量映射的类(Field类)。
  然后可以通过Field类得一个Field对象,然后这个Field对象根据不同的对象获得这个类的某一个对象对应的值。
①使用的Class类中方法:
    getDeclaredField(String name): 返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。
   getDeclaredFields(): 返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。
    getField(String name): 返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。
    getFields()返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。(Field[])
②AccessibleObject 类是 Field、Method 和 Constructor 对象的基类。它提供了将反射的对象标记为在使用时取消默认 Java 语言访问控制检查的能力。
    其中方法:setAccessible(boolean flag):将此对象的 accessible 标志设置为指示的布尔值。
代码示例:
    ReflectPoint pt1 = new ReflectPoint(2, 3);

   Field fieldY = pt1.getClass().getField("y");
   //fieldY的值不是对象身上的变量,而是类上的,要用它取某一个对象上对应的值。
   System.out.println(fieldY.get(pt1));

   Field fieldX = pt1.getClass().getDeclaredField("x");
   fieldX.setAccessible(true); //对于不可见的信息例如:private,可以设定是否可以访问。
   System.out.println(fieldX.get(pt1));
其中ReflectPoint类为自定义的一个类:
     public class ReflectPoint {
     private int x;
     public int y;

     public ReflectPoint(int x, int y) {
          super();
          this.x = x;
          this.y = y;
     }
}

评分

参与人数 1黑马币 +10 收起 理由
黑马晓志 + 10 兄弟只能帮你这么多了...

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马