이것이 올바른 방향으로 당신을 가리켜 야한다고 생각합니다.
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));
}
Introspector를 사용하지 않고 BeanInfo 또는 PropertyDescriptor 인스턴스를 직접 작성할 수 있습니다. 그러나 Introspector는 일반적으로 Good Thing (tm) 인 내부에서 일부 캐싱을 수행합니다. 캐시 없이도 행복하다면
// TODO check for non-existing readMethod
Object value = new PropertyDescriptor("name", Person.class).getReadMethod().invoke(person);
그러나 java.beans API를 확장하고 단순화하는 많은 라이브러리가 있습니다. Commons BeanUtils는 잘 알려진 예입니다. 거기서 간단하게 할 수 있습니다.
Object value = PropertyUtils.getProperty(person, "name");
BeanUtils는 다른 편리한 것들과 함께 제공됩니다. 즉, 사용자 입력에서 속성 설정을 단순화하기 위해 즉석 값 변환 (객체에서 문자열로, 문자열에서 객체로).