2010-01-20 4 views
1

Supposons que j'ai une fonctionComment trouver le type de paramètre de fonction Annotated

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

Comment puis-je trouver le type du paramètre annoté « name ». J'ai un handle à l'instance java.lang.reflect.Method de la fonction doSomething et en utilisant la fonction getParameterAnnotations(), je peux obtenir l'annotation @QueryParam mais je ne suis pas en mesure d'accéder au paramètre sur lequel il est appliqué. Comment puis-je faire cela ?

Répondre

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); 
    } 
} 

Ce sorties:

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

Pour expliquer - le tableau est en deux dimensions parce que d'abord vous avez un tableau de paramètres, puis pour chaque paramètre que vous avez un tableau d'annotations.

Vous pouvez vérifier le type de l'annotation que vous attendez avec instanceof (ou Class.isAssignableFrom(..).

Questions connexes