Как вызвать метод Setter с помощью Reflection API, но не упоминает ничего подобного FieldName & MethodName - PullRequest
0 голосов
/ 09 января 2019

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

Method method = User.class.getDeclaredMethod("setName", String.class);
method.setAccessible(true);
method.invoke(user, "Some name");

А также это

TestClass igsm = new TestClass();
      User user = new User();   

    Method methodName= igsm.getMethod("name",user.getClass(),"setter");
    methodName.setAccessible(true);
    igsm.invokeSetter(user,"Sanket",methodName); 

В этом случае мы просто указываем Имя метода, Имя поля, затем устанавливаем базы значений Имя метода, Имя поля.

Хочу ничего не указывать. И проверьте на основе значения, какой метод метода вызывается. и извлеките всю информацию о времени выполнения и установите значение соответствующим методом.

1 Ответ

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

Таким образом, мы можем легко вызвать метод частного сеттера с помощью Reflection. У меня есть только указать значение, тогда он будет определять, какой метод установки вызывать.

//MainMethod

    public static class InvokeMain 
        {
            public static void main(String... args) throws Throwable 
            {
                Object obj1 = getBean("www.Fouth.User");

                System.out.println(obj1.toString());
            }

        }

    //Customize Method


      public static void extractMethod(Method[] method,Object valueObj,Object classObj) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException
        {
            for(Method m:method)
            {   
                Type[] pType = m.getGenericParameterTypes();

                for(int i=0;i<pType.length; i++)
                {
                    System.out.println("The pType[]"+pType[i]);         

                    if(valueObj.getClass().equals(pType[i]))
                    {   
                        m.setAccessible(true);
                        m.invoke(classObj,valueObj.getClass().toString().valueOf(valueObj));
                    }
                }
            }

        }

      //ReflectionMethod


    public static Object getBean(String beanClassName) throws Exception
        {
            Class klass = Class.forName(beanClassName);
            Object obj = klass.newInstance();               
            Method[] b = klass.getDeclaredMethods();

            RefLevel3.extractMethod(b,"sanket",obj);
            RefLevel3.extractMethod(b,23,obj);


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