/*访问成员变量,返回field类型的对象或数组。
每个field对象代表一个成员变量
getFields();
getField(String name);
getDeclaredFields();
getDeclaredField(String name);
exp:
object(Field类).getDeclaredField(“birthday”);
Field类的常用方法:
getName():获得成员变量名称
getType():获得表示该成员变量类型的Class对象
get(Object obj):获取成员变量的值,返回值为Object
set(Object obj,value obj):将指定对象的成员变量的值设置为value*/
示例代码如下
Example_02类
//依次声明int,float,boolean,String型的成员变量
int i;
public float f;
protected boolean b;
private String s;
}
主类:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) {
Example_02 example_02 = new Example_02();
Class example_02Class = example_02.getClass();
//获得所有成员变量
Field[] f = example_02Class.getDeclaredFields();
for (Field f1 : f) {
System.out.println("该成员变量的名称:" + f1.getName());
System.out.println("该成员变量的类型是" + f1.getType());
//获取并修改值
boolean isTrue = true;
while (isTrue) {
//以整数类型为例
try {
isTrue=false;
System.out.println("修改前的值是" + f1.get(example_02));
if (f1.getType().equals(int.class)) {
System.out.println("利用setInt()修改成员变量的值");
f1.setInt(example_02, 168);
System.out.println("修改后的值是" + f1.get(example_02));
}
} catch (Exception e) {
isTrue=true;
f1.setAccessible(true);
}
}
}
补充:Field类的get()方法:
示例如下:
输出结果:3,4,4