如何获取数组元素的 PropertyDescriptor?

How do I get the PropertyDescriptor for the elements of an array?

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

Foo[] fooArray;

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

如果一个Class对象表示数组类型,你可以要求元素类型:

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

要求 "the PropertyDescriptor" 获得 class 没有任何意义,但也许您正在寻找 BeanInfo

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

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

因此为 Foo 创建一个 BeanDescriptor 给定 fooArray

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

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