Java @关于接口方法参数的WebParam-如何获取名称?

Java @关于接口方法参数的WebParam-如何获取名称?,java,reflection,annotations,Java,Reflection,Annotations,我试图在接口方法中的方法参数user-user上获取注释@WebParam的名称“最佳用户”。由于它是一个接口,以下代码不允许我访问注释: String methodName = "doSomething"; Class<?> clazz = Class.forName(packageName + "." + "UserService"); Method serviceMethod = null; for (Method method: clazz.getMethods())

我试图在接口方法中的方法参数
user-user
上获取注释@WebParam的名称
“最佳用户”
。由于它是一个接口,以下代码不允许我访问注释:

String methodName = "doSomething";

Class<?> clazz = Class.forName(packageName + "." + "UserService");

Method serviceMethod = null;

for (Method method: clazz.getMethods())
{
    if (method.getName().equals(methodName))
    {
        serviceMethod = method;
        break;
    }
}

Class<?>[] parameterTypes = serviceMethod.getParameterTypes();
WebParam webParam = parameterTypes[0].getAnnotation(WebParam.class); //webParam is null
String parameterName = webParam.name();

这不是接口类型的限制

返回参数类型的数组。在您的示例中,它只包含一个
User.class
,因为您的方法有一个
User
类型的参数

您需要使用并获取第一个参数的第一个注释

Annotation[][] parameterTypes = serviceMethod.getParameterAnnotations();
WebParam webParam = (WebParam) parameterTypes[0][0];
由于Java8,您还可以使用和


告诉我如何获得“方法”方法?如果从类中获取,则注释将不在其中。您必须从界面上获得它。@R4J更新了我的问题。这正是我需要的!万分感谢:)
Annotation[][] parameterTypes = serviceMethod.getParameterAnnotations();
WebParam webParam = (WebParam) parameterTypes[0][0];
WebParam webParam = serviceMethod.getParameters()[0].getAnnotation(WebParam.class);