java反射拼接字符串

我有一个java对象类似如下:

public class JavaBean{
    private String b;
    private String a;
    // get set
    ...
}

现在通过以下反射方法来获得b和a的属性

...
BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass());
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();

虽然拿到pds,但发现该pds里元素的排序是按照字母顺序,也就是第0个元素是a,第一个是b,想请教各位大神,这个pds数组有没可能按照代码书写的顺序来排序,即第0个为b,第1个为a?因为我需要动态生成该javabean的字符串拼接,即String s = b + a;

阅读 2.7k
1 个回答

第一,getPropertyDescriptors()获得的是类的属性,不是成员变量,所以如果你的setter不是setA(), setB(), 你的pds数组里有可能得到的不是a,b。如果要得到成员变量,应该用getFields()。另外,根据java doc,反射得到的数组是无序的,如果你需要排序,可以自己排,比如用annotation。得到数组后按照annotation排序。

public class JavaBean{
    @Order(value=1)
    private String b;
    @Order(value=2)
    private String a;
    // get set
    ...
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题