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

时间:2015-04-03 17:04:44

标签: java reflection annotations

示例代码:

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

1 个答案:

答案 0 :(得分:1)

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