0

想知道有没有什么方法可以复用一些Java反射API/SOAP/web服务内部函数或者外部API来实现:

  1. 有一个对象列表,从网络上的方法获得
  2. 通过 config 有一个对应于这些对象的类列表
  3. 属性必须用 1 填充的 pojo

有没有通用的+几行的方式来做到这一点?

例子

void process(Object pojoToFill, Class[] classesOfSetters, Objects[] values) {
         //what to do here to fill up pojoToFill with values using classesOfSetters, in a generic way?
}

void sample() {
    Object []objects;// filled with values that are needed by Person class, sent over the wire, setters
    Class []propertyClasses = new Class[String.class, Address.class]//from config
    Person person = new Person();
    process(person, propertyClasses, objects);

}


public class Person {
    private String name;
    private Address address;// etc
    // getters and setters

}

class Address {
    private String line1;// other properties and getters and setters
}
4

1 回答 1

1

这应该可以通过 java 反射 API 实现。

为每个 setter 类传递 setter 方法名称

void process(Object pojoToFill, Class[] classesOfSetters, String[] setterMethods, Objects[] values) {
 for (int i=0; i < classesOfSetters.length; i++){
Method methodToSetValue = classesOfsetter.getMethod(setterMethods[i]);
methodToSetValue.invoke (pojoToFill, Objects[i]);
}        
}

当您使用 javabeans(getter/setter 方法)时;您还可以在 Java API中使用Bean 自省。

于 2013-09-14T14:29:13.813 回答