2010-01-20 98 views
1

假設的類型我有一個函數如何找到註釋功能參數

public int doSomething(@QueryParam("id") String name, int x){ .... } 

我怎樣才能找到註解參數「名」的類型。我有一個處理函數doSomething的java.lang.reflect.Method實例,並使用函數getParameterAnnotations(),我可以獲得註釋@QueryParam,但無法訪問應用它的參數。我該怎麼做呢 ?

回答

2
void doSomething(@WebParam(name="paramName") int param) { } 

Method method = Test.class.getDeclaredMethod("doSomething", int.class); 
Annotation[][] annotations = method.getParameterAnnotations(); 

for (int i = 0; i < annotations.length; i ++) { 
    for (Annotation annotation : annotations[i]) { 
     System.out.println(annotation); 
    } 
} 

此輸出:

@javax.jws.WebParam(targetNamespace=, partName=, name=paramName, 
    header=false, mode=IN) 

爲了解釋 - 陣列是二維的,因爲首先必須的參數的陣列,然後爲每個參數你有註釋的陣列。

您可以驗證你期望與instanceof(或Class.isAssignableFrom(..)註釋的類型。