得到成员变量

既然能够得到构造方法,那么也能够得到成员变量。这里字段就是成员变量。

 1 package com.hw.Class0228;
 2 
 3 import java.lang.reflect.Field;
 4 
 5 public class Demo02_GetField {
 6     public static void main(String[] args) throws Exception {
 7         Class c = Class.forName("com.hw.Class0228.User");
 8         /**
 9          * getFields()这个方法得到里面所有的public成员变量
10          * 不管是拿到方法还是字段,这里都会构造成一个专门的类。
11          * 这里每个字段都构造成了一个field类
12          */
13         Field[] field = c.getFields(); 
14         for(Field ff : field){
15             System.out.println(ff);
16         }
17     }
18 }

 

 也可以拿到指定字段:

1 Field numberField = c.getField("number");
2 System.out.println(numberField);

与上面是一样的输出效果。

再来:

 1 package com.hw.Class0228;
 2 
 3 import java.lang.reflect.Field;
 4 
 5 public class Demo02_GetField {
 6     public static void main(String[] args) throws Exception {
 7         User user = new User(20,"小明",98,3);
 8         Class c = Class.forName("com.hw.Class0228.User");
 9         /**
10          * getFields()这个方法得到里面所有的public成员变量
11          * 不管是拿到方法还是字段,这里都会构造成一个专门的类。
12          * 这里每个字段都构造成了一个field类
13          */
14         Field[] field = c.getFields(); 
15         for(Field ff : field){
16             System.out.println(ff);
17         }
18         
19         Field numberField = c.getField("number");
20         //下面这种方式是通过反射的方式访问成员变量
21         System.out.println(numberField.getInt(user)); //获取里面的变量。注意它本身是什么变量就要用对应的方法
22         
23     }
24 }

 最后一点,如果是字符串的话直接用get就可以了。像是字符串这样的引用类型的会直接传递一个Object对象。所以其实,如果是int也可以直接用get.

posted @ 2021-03-07 21:28  EvanTheBoy  阅读(81)  评论(0编辑  收藏  举报