假设我有一个功能
public int doSomething(@QueryParam("id") String name, int x){ .... }
如何找到带注释的参数'name'的类型。我有函数doSomething java.lang.reflect.Method
实例的句柄,并使用函数getParameterAnnotations()
,我可以获取注释@QueryParam
但是无法访问应用它的参数。我该怎么做?
答案 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(..)
验证所需注释的类型。