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

我无法使用反射直接在User bean类的Setter方法中设置值


我只能访问那些getter方法,但不能在User Bean Class的Setter方法中设置值。


如何通过反射在Java调用setter方法 方法逐反射在-java的


 //------->This My UserClass


public 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方法中。请让我知道这是可能的。


江户川乱折腾
浏览 201回答 2
2回答

隔江千里

我执行了您的代码,并且工作正常。使用Reflection api,您可以将setAccessible设置为true来调用私有方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java