原理通过sort()方法排序。
/**
* 反射拼接类的属性值
*
* @return
*/
private String getAscOrderString() {
Object object = this;
String rawString = "";
Map map = new HashMap();
//获取所有的属性组
Field[] superField = this.getClass().getSuperclass().getDeclaredFields();
Field[] selfField = this.getClass().getDeclaredFields();
List allfield = new ArrayList();
allfield.addAll(Arrays.stream(superField).collect(Collectors.toList()));
allfield.addAll(Arrays.stream(selfField).collect(Collectors.toList()));
for (int i = 0; i < allfield.size(); i++) {
Field field = allfield.get(i);
String fieldName = field.getName();
if (Objects.nonNull(field.getAnnotation(JSONField.class))) {
fieldName = field.getAnnotation(JSONField.class).name();
}
field.setAccessible(true);
String valString;
try {
if (field.get(object) == null) {
valString = "";
} else {
valString = field.get(object).toString();
}
map.put(fieldName, valString);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Collection keyset = map.keySet();
List list = new ArrayList(keyset);
Collections.sort(list);
for (int i = 0; i < list.size(); i++) {
if (i == (list.size() - 1)) {
if (!StringUtils.isEmpty(map.get(list.get(i)))) {
rawString += list.get(i) + "=" + map.get(list.get(i));
}
} else {
if (!StringUtils.isEmpty(map.get(list.get(i)))) {
rawString += list.get(i) + "=" + map.get(list.get(i)) + "&";
}
}
}
return rawString;
}