我有一個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
提交
取消