使用反射访问成员变量的值

╰半夏微凉° 2021-09-29 08:24 656阅读 0赞

一 代码

  1. import java.lang.reflect.*;
  2. class Person
  3. {
  4. private String name;
  5. private int age;
  6. public String toString()
  7. {
  8. return "Person[name:" + name +
  9. " , age:" + age + " ]";
  10. }
  11. }
  12. public class FieldTest
  13. {
  14. public static void main(String[] args)
  15. throws Exception
  16. {
  17. // 创建一个Person对象
  18. Person p = new Person();
  19. // 获取Person类对应的Class对象
  20. Class<Person> personClazz = Person.class;
  21. // 获取Person的名为name的成员变量
  22. // 使用getDeclaredField()方法表明可获取各种访问控制符的成员变量
  23. Field nameField = personClazz.getDeclaredField("name");
  24. // 设置通过反射访问该成员变量时取消访问权限检查
  25. nameField.setAccessible(true);
  26. // 调用set()方法为p对象的name成员变量设置值
  27. nameField.set(p , "Yeeku.H.Lee");
  28. // 获取Person类名为age的成员变量
  29. Field ageField = personClazz.getDeclaredField("age");
  30. // 设置通过反射访问该成员变量时取消访问权限检查
  31. ageField.setAccessible(true);
  32. // 调用setInt()方法为p对象的age成员变量设置值
  33. ageField.setInt(p , 30);
  34. System.out.println(p);
  35. }
  36. }

二 运行

  1. E:\Java\疯java讲义\codes\18\18.4>java FieldTest
  2. Person[name:Yeeku.H.Lee , age:30 ]

发表评论

表情:
评论列表 (有 0 条评论,656人围观)

还没有评论,来说两句吧...

相关阅读