写点什么

java 反射 - 变量键值对排序

  • 2021 年 11 月 11 日
  • 本文字数:1202 字

    阅读完需:约 4 分钟

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


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


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);


}


}


}

评论

发布
暂无评论
java反射-变量键值对排序