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

方法类:
  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. }
复制代码



1 个回复

倒序浏览
赞一个,楼主写的很用心
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马