黑马程序员技术交流社区

标题: 【记录】代码练习-反射设置对象的指定成员变量的值 [打印本页]

作者: Kevin.Kang    时间: 2015-8-12 15:44
标题: 【记录】代码练习-反射设置对象的指定成员变量的值
方法类:
  1. package com.kxg_04;

  2. import java.lang.reflect.Field;

  3. public class Tool {
  4.         public static void setProperty(Object obj, String propertyName, Object value)
  5.                         throws Exception {
  6.                 // 第一参数需要修改的对象,第二个参数是需要修改对象中的成员变量名称,第三个参数就是需要把这成员变量修改成什么值
  7.                 // 获取传入对象的字节码文件对象
  8.                 Class c = obj.getClass();

  9.                 // 获取成员变量,防止成员变量是私有修饰,用getDeclaredField()方法
  10.                 Field f = c.getDeclaredField(propertyName);

  11.                 // 跳过访问检查
  12.                 f.setAccessible(true);

  13.                 // 把指定对象的该成员变量设置为指定值
  14.                 f.set(obj, value);
  15.         }
  16. }
复制代码
测试类:
  1. package com.kxg_04;

  2. public class ToolDemo {
  3.         public static void main(String[] args) throws Exception {
  4.                 Person p = new Person();
  5.                 Tool.setProperty(p, "name", "周星驰");
  6.                 System.out.println(p);
  7.         }
  8. }

  9. class Person {
  10.         private String name;
  11.         int age;

  12.         @Override
  13.         public String toString() {
  14.                 return "Person [name=" + name + ", age=" + age + "]";
  15.         }
  16. }
复制代码




作者: 耀阳圣尊    时间: 2015-8-12 15:53
赞一个,楼主写的很用心




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