Как получить значение из POJO, используя отражение? - PullRequest
0 голосов
/ 19 сентября 2011

Я просто создал универсальный метод One, используя метод Reflection API.В этом методе я пытаюсь получить значение метода частиц (метод получения / метод установки), но я застрял, я не знаю, как это сделать.Я Абель, чтобы получить все Имя метода, используя API Reflection метода, но не Абель, чтобы получить значение этого метода.Поэтому, пожалуйста, помогите мне.

вот мой код ......

/ *
propertyNames Список содержит две записи.

   and that records are two different EntityName(Variable Name)

   ex. in my class i have declared two Entity(Variable)
   private Integer productId;
   private Integer bomBucket;

   so propertyNames List is contain [productId ,  bomBucket] this two records.

* /

 public <T>void fillList(List<String> propertyNames , T clas){

    try{
        for(Object entity : entities.keySet()){
            if(propertyNames != null && propertyNames.size() > 0){  
                Method[] methodList = clas.getClass().getMethods(); 
                Method methodName;
                for (String propertyName : propertyNames) {
                    for(Method method : methodList){
                        if(method.getName().trim().startsWith("set")){
                           if(propertyName.trim().equalsIgnoreCase(method.getName().substring(3, method.getName().trim().length()))){

                               methodName = clas.getClass().getMethod(method.getName().trim(),new Class[]{Integer.class});

                               System.out.println("HERE I GET METHOD NAME ::: " + methodName.getName());

                               /*
                                * here one by one i am getting all the Setter methods name from the class .
                                * but i want a that Setter methods values. Not return type.  
                                */
                           }
                       } 
                   }   
                }
            }
        }   

    }catch (Exception e) {
        e.printStackTrace();
    }
}

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

Вы также можете использовать класс java.beans.Introspector и один из его методов getBeanInfo.Он возвращает экземпляр BeanInfo, который ссылается на все дескрипторы свойств java.beans.PropertyDescriptor .

0 голосов
/ 19 сентября 2011

Что вы подразумеваете под "значением метода" Вы имеете в виду тип возвращаемого значения метода или вы хотите вызывать этот метод для определенного экземпляра его родительского класса, возможно, с некоторыми аргументами, а затем получить значениечто это возвращает?В этом случае, если ваш метод не является общедоступным, вы должны сначала вызвать setAccessible (true) для объекта метода, прежде чем вызывать его:

//get instance of the class that has your method
    DsrProcessor dsrProcessor = DsrProcessor.class.newInstance();
    //get method object (by passing in it's name and the list of argument types he's accepting - echo(String):
    Method m = DsrProcessor.class.getMethod("echo", String.class);
    //use reflection to invoke the method passing the instance of it's class and a list of arguments :
    String methodReturnValue = (String) m.invoke(dsrProcessor, "Hello");
    //do something with what the method returned
    System.out.println(methodReturnValue);//prints: "echo:hello"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...