描述:
有些时候会用到把穿过来的对象用kv的形式拼接这个时候用反射就很不错,直接上代码吧
public class FanSeVo {
private String name;
private String id;
//.......
// 如果是跟外部程序或者接口对接的话,下面还可以加2个属性,一个是相互约定的秘钥,一个//是排除秘钥之后对属性和值做凭借之后的MD5加密之后的值,可以做数据安全考虑,防止传输过程数据被篡改
}
package com.ycj.my_all_demo.fanse;
import java.lang.reflect.Field;
import java.util.HashMap;
/**
* @author ycj
* @data 17:55
*/
public class FanSe {
public static void main(String[] args) {
FanSeVo fanSeVo = new FanSeVo("1", "2");
Field[] fields = fanSeVo.getClass().getDeclaredFields();
HashMap<String, String> map = new HashMap<>();
for (Field field : fields) {
field.setAccessible(true);
try {
// 把对象的属性做k,值做v
// 当然中间还可做其他的业务操作,比如跳过某些属性什么的
String name = field.getName();
String s = field.get(fanSeVo).toString();
map.put(name,s);
System.out.println();
} catch (Exception e) {
e.printStackTrace();
}
}
// 吧map数据转成str,kv的形式
String strByMap = getStrByMap(map);
System.out.println(strByMap);//name1id2
}
public static String getStrByMap(HashMap<String, String> map){
StringBuilder str = new StringBuilder();
map.forEach((k,v)->{str.append(k).append(v);});
return str.toString();
}
}
总结,其实反射也不难,遇到什么多写几遍就好了
// 记录时间2021/12/21
工作2年编程之路有点迷茫了,好像只是比从学校出来好一点,至少说拿到一个项目知道逻辑可以以上手,大事进阶的话还是不行
如果你刚好看到,刚好跟我一样的情况我们可以讨论一下,相互共勉
邮箱:yechuanjiang199@163.com