欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

java 27 - 4 反射之 通过反射获取成员变量并使用

发布时间:2025/7/14 编程问答 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java 27 - 4 反射之 通过反射获取成员变量并使用 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

类Field: 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。

 

A:获得类的成员变量 数组:

  1、getFields(公共类的)

  2、getDeclaredFields(所有类型的)

B:获得类的单个成员变量:

  1、getField (公共类的)

  2、getDeclaredField (所有类型的)

 

  A.1:获得类的公共成员变量:

1 //获取类的字节码文件对象 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 4 //获得该对象的公共成员变量 5 Field[] f = c.getFields(); 6 //遍历 7 for(Field fie : f){ 8 System.out.println(fie); 9 }

 

 A.2:获得类的所有成员变量:

1 //获取类的字节码文件对象 2 Class c = Class.forName("zl_Relfect_01.Person"); 3    //获取该类的所有成员变量 4 Field[] f = c.getDeclaredFields(); 5 for(Field fie : f){ 6 System.out.println(fie); 7 }

 

 B.1:获得单个公共成员变量:

1 //获取类的字节码文件对象 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 //获取单个公共的成员变量 4 Field f = c.getField("address"); 5 System.out.println(f);

 

 B.2:获得单个所有类型的成员变量:

1 //获取类的字节码文件对象 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 // 获取单个成员变量(所有类型) 4 Field f = c.getDeclaredField("name"); 5 System.out.println(f);

 

 通过反射获取成员变量并使用

1      //获取类的字节码文件对象 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 //通过无参构造创建对象 4 Constructor con = c.getConstructor(); 5 Object obj = con.newInstance(); 6 7 8 //获取私有成员变量name,并对它进行赋值 9 //首先获取私有成员变量name 10 Field newname = c.getDeclaredField("name"); 11 //成员变量name是私有的,所以得先取消语言访问检查 public void setAccessible(boolean flag) 12 newname.setAccessible(true); 13 //set(Object obj,Object value):将指定对象变量上此 Field 对象表示的字段设置为指定的新值。 14 //给obj里面的newname赋值为张三 15 newname.set(obj, "张三"); 16 System.out.println(obj);//Person [name=张三, age=0, address=null] 17 18 19 //获取默认类型成员变量age,并对它进行赋值 20 //获取age变量,并赋值 21 Field newage = c.getDeclaredField("age"); 22 //取消语言访问检查 23 newage.setAccessible(true); 24 //给age赋值 25 newage.set(obj, 13); 26 System.out.println(obj); 27 28 29 //获取公共成员变量address,并对它赋值 30 //获取address对象,并赋值 31 Field newaddress = c.getDeclaredField("address"); 32 newaddress.set(obj, "家乡"); 33 System.out.println(obj);

 

转载于:https://www.cnblogs.com/LZL-student/p/5966203.html

总结

以上是生活随笔为你收集整理的java 27 - 4 反射之 通过反射获取成员变量并使用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。