@Before("webLog()")
public void doBefore(JoinPoint joinPoint) {
startTime.set(System.currentTimeMillis());
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
String classMethod = joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName() + ",params:" + Arrays.toString(joinPoint.getArgs());
// 记录下请求内容
Object[] objects = joinPoint.getArgs();
logger.info("ARGS : " + Arrays.toString(joinPoint.getArgs()));
//test1(joinPoint,objects);//获取targetClass 下的所有方法进行遍历
//test2(joinPoint,objects); //根据方法名和参数列表直接定位方法
}
public static String test1(JoinPoint joinPoint, Object[] objects) {
String description = "";
try {
String targetName = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
Object[] arguments = joinPoint.getArgs();
Class targetClass;
targetClass = Class.forName(targetName);
//获取targetClass 下的所有方法进行遍历
Method[] methods = targetClass.getMethods();
for (Method method : methods) {
if (method.getName().equals(methodName)) {
Class[] classes = method.getParameterTypes();
if (classes.length == arguments.length) {
if (method.getAnnotation(xxx.class) != null) {
description = method.getAnnotation(xxx.class).description();
}
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return description;
}
public static String test2(JoinPoint joinPoint, Object[] objects) {
String description = "";
try {
String targetName = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
Object[] arguments = joinPoint.getArgs();
Class targetClass;
targetClass = Class.forName(targetName);
//根据方法名和参数列表直接定位方法
Method method = targetClass.getMethod(methodName, (Class>[]) objects );
Class[] classes = method.getParameterTypes();
if (classes.length == arguments.length) {
if (method.getAnnotation(xxx.class) != null) {
description = method.getAnnotation(xxx.class).description();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return description;
}
我想改造 test2 方法 但是 强转还是报错
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Class;