java获取aop中所有参数并判断是否为对象
在AOP中,可以通过反射来获取方法的参数信息,并判断参数是否为对象。下面是一个示例代码:
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.reflect.MethodSignature;
public class MyAspect {
public void myMethod(JoinPoint joinPoint) {
// 获取方法参数
Object[] args = joinPoint.getArgs();
// 获取方法参数类型
Class[] argTypes = ((MethodSignature) joinPoint.getSignature()).getParameterTypes();
// 遍历参数
for (int i = 0; i < args.length; i++) {
Object arg = args[i];
Class argType = argTypes[i];
// 判断参数是否为对象
if (arg != null && argType.isAssignableFrom(Object.class)) {
// 参数为对象
System.out.println("参数" + (i + 1) + "是对象");
}
}
}
}
在上面的代码中,joinPoint参数是切面方法的参数,通过getArgs方法可以获取到方法的所有参数。然后通过getParameterTypes方法获取到参数的类型数组。遍历参数数组,判断每个参数是否为对象,可以使用isAssignableFrom方法来判断。如果参数是对象,则打印出相应的信息
原文地址: https://www.cveoy.top/t/topic/hNPG 著作权归作者所有。请勿转载和采集!