2017-10-31 6 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"값을 얻을 것이며 다른 메서드에서는 두 번째 또는 세 번째 인수에서 가져올 것입니다.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 
    } 
}