猿问

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;

哔哔one
浏览 409回答 1
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 ... }
随时随地看视频慕课网APP

相关分类

Java
我要回答