我目前正在使用JoinPoint捕获在运行时传递给服务方法的参数.虽然JoinPoint帮助我检索参数值,但我发现当传递的参数是数组时,我没有提供任何好的API来检索参数名称,参数类型,单个参数值等.
这是一个例子:
public void doIt(String user, Attribute[] attr, Integer[] i, boolean bool, List<Attribute> list){.....}
Run Code Online (Sandbox Code Playgroud)
对于上面的方法,当我使用JoinPoint.getArgs()时,我看到参数的垃圾值,它是一个数组或集合.如果参数是数组或集合,我如何验证它们是否是其中之一以及如何遍历它们以检索单个值?
有什么建议 ?谢谢
Bij*_*men 21
这应该工作:
MethodSignature signature = (MethodSignature)joinPoint.getSignature();
String[] parameterNames = signature.getParameterNames();
Object[] parameterValues = joinPoint.getArgs();
Run Code Online (Sandbox Code Playgroud)
parameterNames应该与您传入的内容相匹配.
更新1:您可能正在编译关闭调试符号 - (显式传入javac -g:none,或通过maven/ant中的标志).关闭调试符号后,名称将不可用,编译器将替换为args1等.尝试使用未明确关闭的调试符号进行编译.