Я думаю, что это должно указать вам правильное направление:
import java.beans.*
for (PropertyDescriptor pd : Introspector.getBeanInfo(Foo.class).getPropertyDescriptors()) {
if (pd.getReadMethod() != null && !"class".equals(pd.getName()))
System.out.println(pd.getReadMethod().invoke(foo));
}
Обратите внимание, что вы можете создавать экземпляры BeanInfo или PropertyDescriptor самостоятельно, т.е. без использования Introspector.Тем не менее, Introspector выполняет некоторое внутреннее кэширование, что обычно является хорошей вещью (tm).Если вы счастливы без кеша, вы можете даже пойти на
// TODO check for non-existing readMethod
Object value = new PropertyDescriptor("name", Person.class).getReadMethod().invoke(person);
Однако существует множество библиотек, которые расширяют и упрощают API java.beans.Commons BeanUtils является хорошо известным примером.Там вы просто сделаете:
Object value = PropertyUtils.getProperty(person, "name");
BeanUtils поставляется с другими полезными вещами.т.е. преобразование значений «на лету» (объект в строку, строка в объект) для упрощения установки свойств из пользовательского ввода.