Как установить значения непосредственно в частном методе Setter в классе бина с помощью Reflection в Java - PullRequest
0 голосов
/ 05 января 2019

Я не могу установить значения непосредственно в методе Setter моего класса бина User, используя отражение

Я могу получить доступ только к методу получателя, но не могу установить значение в Метод установки класса User Bean.

как вызвать метод установки с помощью отражения в Java Метод-побочное отражение-в-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. Пожалуйста, дайте мне знать, что это возможно.

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Я выполнил ваш код и он работает нормально. Используя Reflection api, вы можете вызывать закрытые методы с помощью setAccessible как true.

0 голосов
/ 05 января 2019

Это потому, что ваш метод setName () имеет значение private. Вы не можете получить доступ к каким-либо закрытым методам класса, кроме самого этого класса.

Измените его на ..

public void setName(String name) {
    this.name = name;
}

И тебе будет хорошо идти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...