如何查找带注释的函数参数的类型

时间:2010-01-20 09:19:46

标签: java annotations rest

假设我有一个功能

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

如何找到带注释的参数'name'的类型。我有函数doSomething java.lang.reflect.Method实例的句柄,并使用函数getParameterAnnotations(),我可以获取注释@QueryParam但是无法访问应用它的参数。我该怎么做?

1 个答案:

答案 0 :(得分: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(..)验证所需注释的类型。