【发布时间】:2016-06-30 02:49:48
【问题描述】:
我有一个数组字段的 PropertyDescriptor,如下所示。
Foo[] fooArray;
如何获取Foo 的PropertyDescriptor,以便获取该类的getter 和setter 方法?
【问题讨论】:
标签: java introspection
我有一个数组字段的 PropertyDescriptor,如下所示。
Foo[] fooArray;
如何获取Foo 的PropertyDescriptor,以便获取该类的getter 和setter 方法?
【问题讨论】:
标签: java introspection
您可以通过Class.getComponentType() 访问数组类的组件类型。
因此,在给定fooArray 写入的情况下,为Foo 创建一个BeanDescriptor
BeanDescriptor d = new BeanDescriptor(fooArray.getClass().getComponentType());
BeanDescriptor 然后允许您检索所有Foo bean 属性的PropertyDescriptor。
【讨论】:
如果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();
【讨论】:
getBeanInfo 调用的略微修改版本,如下BeanInfo infoAboutFoo = Introspector.getBeanInfo(clazz.getComponentType(), Object.class);