PropertyDescriptors - лучший способ, но Spring упрощает их использование, если вы используете интерфейс BeanWrapper .
Вот глупый тестовый класс:
public class Thingy{
private final String foo = "hey";
private final int bar = 123;
private final List<String> grr = Arrays.asList("1", "2", "3");
public String getFoo(){
return this.foo;
}
public int getBar(){
return this.bar;
}
public List<String> getGrr(){
return this.grr;
}
}
А вот основной метод проверки его экземпляра:
public static void main(final String[] args) throws Exception{
final Thingy thingy = new Thingy();
final BeanWrapper wrapper = new BeanWrapperImpl(thingy);
for(final PropertyDescriptor descriptor : wrapper.getPropertyDescriptors()){
System.out.println(descriptor.getName() + ":"
+ descriptor.getReadMethod().invoke(thingy));
}
}
Вывод:
bar:123
class:class com.mypackage.Thingy
foo:hey
grr:[1, 2, 3]
Прочитайте это для справки: