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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 游呤人 中级黑马   /  2015-7-16 01:28  /  198 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 游呤人 于 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.         }
复制代码


0 个回复

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