【问题标题】:How do I get the PropertyDescriptor for the elements of an array?如何获取数组元素的 PropertyDescriptor?
【发布时间】:2016-06-30 02:49:48
【问题描述】:

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

Foo[] fooArray;

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

【问题讨论】:

    标签: java introspection


    【解决方案1】:

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

    因此,在给定fooArray 写入的情况下,为Foo 创建一个BeanDescriptor

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

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

    【讨论】:

      【解决方案2】:

      如果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);
      猜你喜欢
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 1970-01-01
      相关资源
      最近更新 更多