反射从方法参数注释中获取值
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());
}
}
示例代码:
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());
}
}