为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过使用Java中的Reflection在Bean类的私有Setter方法中直接设置值

如何通过使用Java中的Reflection在Bean类的私有Setter方法中直接设置值

江户川乱折腾 2021-04-08 14:11:26
我无法使用反射直接在User bean类的Setter方法中设置值我只能访问那些getter方法,但不能在User Bean Class的Setter方法中设置值。如何通过反射在Java调用setter方法 方法逐反射在-java的 //------->This My UserClasspublic class User {     private String name;     private int age;    private String getName() {        return name;    }    private void setName(String name) {        this.name = name;    }    private int getAge() {        return age;    }    private void setAge(int age) {        this.age = age;    }    @Override    public String toString() {        return "User [name=" + name + ", age=" + age + "]";    } } //------> Then My Main Method  public static void main(String args[]){ try {    User user = new User();    Method method = User.class.getDeclaredMethod("setName", String.class);    method.setAccessible(true);    method.invoke(user, "Some name");    System.out.println("user.getName() = " + user.getName());} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {    e.printStackTrace();}}我想直接调用Setter方法,并在Setter中设置值,以使更改可以反映在User Bean setter方法中。请让我知道这是可能的。
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

我执行了您的代码,并且工作正常。使用Reflection api,您可以将setAccessible设置为true来调用私有方法。


查看完整回答
反对 回复 2021-04-14
  • 2 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信