变量反射是指使用反射机制来获取Java类中的成员变量信息,并对这些变量进行读写操作。Java中每个对象都有一个Class对象,它包含了对象的类型信息、成员变量、方法、构造方法等等。通过获取Class对象,我们就可以获取对象的成员变量信息,例如变量名、变量类型等等
public class People {
private String name; //定义变量name
int age; //定义变量age
@Override
public String toString() {
return name+":"+age;
}
}
`
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) throws InstantiationException, IllegalAccessException, SecurityException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException, NoSuchFieldException {
Class p = People.class; //得到People类 p
People pp = (People) p.newInstance(); //实例化People类,得到对象pp
Field f1 = p.getDeclaredField("name"); //得到name对象
f1.setAccessible(true); //设置name的访问权限
f1.set(pp, "名字"); //设置name的值
Field f2 = p.getDeclaredField("age"); //得到age对象
f2.setAccessible(true); //设置age的访问权限
f2.set(pp, 12); //设置age的值
System.out.println(pp); //输出Peope对象pp到控制台
}
}