提示信息

Java通过反射访问成员变量

望眼欲穿 已关注

在Java中,可以通过反射来访问和操作一个类的成员变量。下面是一个简单的示例代码:

  1. import java.lang.reflect.Field;
  2. public class Main {
  3. public static void main(String[] args) throws Exception {
  4. // 获取该类的Class对象
  5. Class<?> clazz = MyClass.class;
  6. // 获取该类的公共成员变量
  7. Field field = clazz.getField("publicField");
  8. // 创建该类的实例
  9. MyClass myClass = new MyClass();
  10. // 设置公共成员变量的值
  11. field.set(myClass, "new publicField value");
  12. // 获取公共成员变量的值
  13. String publicFieldValue = (String) field.get(myClass);
  14. System.out.println("publicField value: " + publicFieldValue);
  15. // 获取该类的私有成员变量
  16. Field privateField = clazz.getDeclaredField("privateField");
  17. // 设置私有成员变量的访问权限
  18. privateField.setAccessible(true);
  19. // 设置私有成员变量的值
  20. privateField.set(myClass, "new privateField value");
  21. // 获取私有成员变量的值
  22. String privateFieldValue = (String) privateField.get(myClass);
  23. System.out.println("privateField value: " + privateFieldValue);
  24. }
  25. }
  26. class MyClass {
  27. public String publicField;
  28. private String privateField;
  29. }

在上述代码中,首先获取了MyClass类的Class对象。然后通过getField()方法获取了类的公共成员变量,并通过set()方法设置了其值,再通过get()方法获取其值并打印。

接着使用getDeclaredField()方法获取了类的私有成员变量,并通过setAccessible(true)方法设置其访问权限。之后同样通过set()方法设置了其值,再通过get()方法获取其值并打印。

运行上述代码,将会输出以下结果:

  1. publicField value: new publicField value
  2. privateField value: new privateField value

这样就实现了通过反射访问成员变量的操作。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
望眼欲穿 关注 已关注

最近一次登录:2023-10-09 13:11:27   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图