如何获取数组元素的 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
。
我有一个数组字段的 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
。