希望下面这段学习代码能帮助到你:
- import java.lang.reflect.*;
- public class ReflectPoint {
- public int y;
- private int x;
- public ReflectPoint(int x, int y) {
- super();
- this.x = x;
- this.y = y;
- }
- }
- public class FieldTest {
- public static void main(String[] args) throws Exception {
- ReflectPoint pt1 = new ReflectPoint(3,5);
-
- //获取public属性的属性
- Field fieldY = pt1.getClass().getField("y");
- //使用get能够获取属性值
- System.out.println(fieldY.get(pt1)); //输出5
- //使用set能够设置属性值,set的入参时需要操作的对象和需要设置的值,表示把某个对象的该属性设置成这个值
- fieldY.set(pt1, 8);
- System.out.println(fieldY.get(pt1)); //输出8
-
-
- //获取私有成员变量,与获取public的属性不同
- Field fieldX = pt1.getClass().getDeclaredField("x");
- //私有变量默认不可以访问,可以使用setAccessible设置其可以访问和设置
- fieldX.setAccessible(true);
- System.out.println(fieldX.get(pt1));//输出3
- //这里表明可以通过反射对private变量进行操作(一般方法是不能访问private变量的)
- fieldX.set(pt1, 5);
- System.out.println(fieldX.get(pt1)); //输出5
- }
- }
复制代码 |