反射从方法参数注释中获取值

Reflection geting value from method argument annotation

示例代码:

public interface TestClass {

    @AnnoTest
    public Object getTestObject( @AnnoTestArg("id") Integer postId );

}

如何从 @AnnoTestArg 注释中获取值?我知道如何检查是否注释了参数,但是我无法检查注释值。

这是我的代码:

public void build(...) {
    Annotation[][] anno = pm.getMethod().getParameterAnnotations();

    for( Annotation a : anno[argNumber] ) {
        if( a.equals(AnnoTestArg.class) ) {
            // value ?
        }
    }


    return connector;
}

Annotation是所有注解类型的超接口。假设您的 AnnoTestArg 注释类似于

@Target(value = ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@interface AnnoTestArg {
    String value();
}

您可以将 Annotation 值转换为 AnnoTestArg 并调用适当的方法

for (Annotation a : anno[0]) {
    if (a instanceof AnnoTestArg) {
        AnnoTestArg arg = (AnnoTestArg) a;
        System.out.println(arg.value());
    }
}