Reflexión: obtener el nombre de la variable y el valor de la variable
Caso:
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);
}
}
Referencia: https://blog.csdn.net/gaoshan12345678910/article/details/84305475
Bloque de código estático estático
Función: completa la inicialización de fieldMap, fields es un método de reflexión, obtiene todos los campos declarados y almacena el nombre y el valor de la variable en el mapa, donde las variables son todas String
Reflexione para obtener el contenido de otros valores de variable:
https://blog.csdn.net/zknxx/article/details/46121057
Obtenga el nombre y el valor del parámetro de entrada a través de la reflexión en la sección
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;
}