2017-10-31 11 views
0
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"値を取得し、別のメソッドでは2番目または3番目の引数で取得します。joinpoint.getArgs()の引数の値を取得する方法は?

答えて

0

メソッド宣言を提供する方が簡単です。

void searchClientContactDetails(String a, Integer b);  
void searchClientContactDetails(Long a, String b); 

のためにあなたの

Object[] args = joinPoint.getArgs(); 
Object arg=args[0]; 

は異なる値を返すことになる ので。

は、多分それはあなたの問題)

0

あなたが方法getResponderType探しargsを反復処理することが可能です。あなたが探しているものを見つけたら、壊すことができます。

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 
    } 
} 
関連する問題