得到成员变量
既然能够得到构造方法,那么也能够得到成员变量。这里字段就是成员变量。
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.