样例代码:

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

关于java - 反射从方法参数注释中获取值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29436566/

10-10 07:51