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

как вызвать метод приватного сеттера Bean путем отражения в java

Я не могу понять, как вызывать метод частного сеттера в My User Bean. Я все готово использовал PropertyDescriptor и много способов, но я не имею доступа к частным метод установки по отражению.

public class GetterAndSetter
 {
     public static void main(String[] args)
     {
         GetterAndSetter gs = new GetterAndSetter();
         User user = new User();

          try {
            gs.callSetter(user,"name","Sanket");
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IntrospectionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

     }

     private void callSetter(Object obj,String fieldName, Object value) throws IntrospectionException, InvocationTargetException, IllegalAccessException , IllegalArgumentException
     {
         PropertyDescriptor pd;

         pd = new PropertyDescriptor(fieldName,obj.getClass());
         pd.getWriteMethod().invoke(obj,value);
     }

 }

Этот код я хотел бы получить доступ только к полю и установить значение в поле, но я не могу получить доступ к полю установщика непосредственно к Reflection

1 Ответ

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

Так вы можете вызвать приватный метод в классе User:

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();
}

Обратите внимание на звонок method.setAccessible(true);

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