反射:获取变量名与变量值
案例:
public class Test{
private static Map<String, String> fieldMap = new HashMap<>();
/**
* 发布A
*/
public static final String PUBLISH_A= "";
/**
* 新建A
*/
public static final String CREATE_A= "";
static {
Field[] fields = Test.class.getDeclaredFields();
fieldMap = new HashMap<>();
for(Field field : fields) {
try {
fieldMap.put(field.getName(), field.get(Test.class).toString());
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
public static String findCode(String code) {
return fieldMap.get(code);
}
}
参考:https://blog.csdn.net/gaoshan12345678910/article/details/84305475
static静态代码块
作用:完成fieldMap的初始化,fields为反射方法,获取所有声明的字段,并将变量名与变量值存入map,这里的变量都是String类型
反射获取其他变量值的内容:
https://blog.csdn.net/zknxx/article/details/46121057
切面中通过反射获取入参名与入参值
private Map<String, Object> getParaNameAndValue(ProceedingJoinPoint joinPoint) {
Map<String, Object> param = new HashMap<>();
Object[] paramValues = joinPoint.getArgs();
Signature signature = joinPoint.getSignature();
String[] paramNames = null;
if (signature instanceof CodeSignature) {
paramNames = ((CodeSignature) signature).getParameterNames();
}
for (int i = 0; i < paramNames.length; i++) {
param.put(paramNames[i], paramValues[i]);
}
return param;
}