Java 反射获取对象的私有成员变量

Java 反射获取对象的私有成员变量

如题:如何修改User对象的name属性的值?

public class User {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

解题思路:
1:通过反射拿到User类的字节码,
2:通过字节码获取到User类的uname的字段,然后修改相应的值
[注意] 记得设置Field对象的访问权限为true

    User user = new User();
    System.out.println(user.getName());
    try{
        Class userClass = Class.forName(User.class.getName());
        Field userNameField = userClass.getDeclaredField("name");
        userNameField.setAccessible(true);  // 必要
        userNameField.set(user, "岳云鹏");
        System.out.println(user.getName());
    }catch (Exception e){
       e.printStackTrace();
    }

猜你喜欢

转载自blog.csdn.net/weixin_33901926/article/details/87267680