java 反射 - 变量键值对排序
private String aLaowang;
private String bLaowang;
private String cLaowang;
public String getaLaowang() {
return aLaowang;
}
public void setaLaowang(String aLaowang) {
this.aLaowang = aLaowang;
}
public String getbLaowang() {
return bLaowang;
}
public void setbLaowang(String bLaowang) {
this.bLaowang = bLaowang;
}
public String getcLaowang() {
return cLaowang;
}
public void setcLaowang(String cLaowang) {
this.cLaowang = cLaowang;
}
}
(2)ReflesBase 类及说明
public class ReflesBase {
public String token;
public String sign;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
}
简要说明:
这里有个业务场景,就是所有从前端接受到的 DTO 都要有 token/sign 等字段,以便进行鉴权验证,需要创建个基础类来继承(有需要),为什么基类中变量是 public,接下来会介绍。
2.2.2 核心方法类 ReflexUtils
import java.lang.reflect.Field;
import java.util.Map;
import java.util.TreeMap;
public class ReflexUtils {
public static Map<String, Object> getKeyAndValue(Object obj) {
Map<String, Object> map = new TreeMap<String, Object>();
// 得到类对象
Class userCla = (Class) obj.getClass();
/* 得到类中的所有属性集合 */
Field[] fs = userCla.getDeclaredFields();
for (int i = 0; i < fs.length; i++) {
Field f = fs[i];
f.setAccessible(true); // 设置些属性是可以访问的
Object val = new Object();
try {
val = f.get(obj);
// 得到此属性的值
map.put(f.getName(), val);// 设置键值
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
Field[] fs2 = userCla.getFields();
for (int i = 0; i < fs2.length; i++) {
Field f = fs2[i];
f.setAccessible(true); // 设置些属性是可以访问的
Object val = new Object();
try {
val = f.get(obj);
// 得到此属性的值
map.put(f.getName(), val);// 设置键值
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return map;
}
public static void main(String[] args) {
ReflesTest1 test1 = new ReflesTest1();
test1.setaLaowang("aaaa");
test1.setbLaowang("bbbb");
test1.setcLaowang("cccc");
test1.setT
oken("fdaflkjdskfj ");
Map<String, Object> map = getKeyAndValue(test1);
System.out.println(map);
for (String s : map.keySet()) {
String value = (String) map.get(s);
if (value != null) {
System.out.println(s+value);
}
}
}
评论