我有一个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;
1 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
第一,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
...
}
添加回答
举报
0/150
提交
取消