String type = "";
if("searchClientContactDetails".equalsIgnoreCase(methodName) || "getClientAndVendorOrgDeatilsById".equalsIgnoreCase(methodName)
|| "saveVenodrContact".equalsIgnoreCase(methodName) || "getSpocAndOwnerDetailsById".equalsIgnoreCase(methodName)
|| "terminateSpoc".equalsIgnoreCase(methodName)){
Object[] args = joinPoint.getArgs();
Object arg=args[0];
Class c=arg.getClass();
type=(String)c.getMethod("getResponderType").invoke(arg);
}
从上面的代码中,如果我的getResponderType值在args [0]中,那么我得到了所需的值,如果我的值存在于args [1]或args [2]中(如果多个方法使用相同的话)该怎么办? 。在我的代码中,我将在少数方法的第一个参数中获得“getResponderType”值,而在另一个方法中,我将在第二个或第三个参数中获取它。
答案 0 :(得分:0)
如果提供方法声明会更容易。 因为
void searchClientContactDetails(String a, Integer b);
void searchClientContactDetails(Long a, String b);
你的
Object[] args = joinPoint.getArgs();
Object arg=args[0];
将返回不同的值。
也许这是你的问题)
答案 1 :(得分:0)
您可以遍历args
寻找方法getResponderType
。一旦找到了你想要的东西,你就可以休息。
String type = "";
Object[] args = joinPoint.getArgs();
for (Object arg : args) {
Class clazz = arg.getClass();
try {
Method mthd = arg.getClass().getMethod("getResponderType");
if (mthd != null) {
type = (String) clazz.getMethod(
"getResponderType").invoke(arg);
break;
}
} catch (Exception e) {
//do nothing
}
}