如何获取数组元素的PropertyDescriptor?

时间:2016-03-14 21:11:22

标签: java introspection

我有一个数组字段的PropertyDescriptor,如下所示。

Foo[] fooArray;

如何获取Foo的PropertyDescriptor,以便我能够获得该类的getter和setter方法?

2 个答案:

答案 0 :(得分:3)

如果Class对象表示数组类型,则可以请求元素类型:

Class<?> clazz = Foo[].class;
assert (clazz.isArray());
assert Foo.class.equals(clazz.getComponentType());

要求“PropertyDescriptor一个类并没有多大意义,但也许你正在寻找BeanInfo

BeanInfo infoAboutFoo = Introspector.getBeanInfo(clazz.getComponentType());
PropertyDescriptor[] fooDescriptors = infoAboutFoo.getPropertyDescriptors();

答案 1 :(得分:2)

您可以通过Class.getComponentType()访问数组类的组件类型。

因此,为BeanDescriptor Foo写{/ 1}}创建fooArray

BeanDescriptor d = new BeanDescriptor(fooArray.getClass().getComponentType());

然后BeanDescriptor允许您检索所有PropertyDescriptor bean属性的Foo