如何提取Java注解的成员。例如。我们有以下一个:
@Retention(RetentionPolicy.RUNTIME)
public @interface XYZ {
int min() default 0;
String name() default "";
String [] colors();
}
我有一个类,其方法用 XYZ 注释。如何为每个类方法提取注释信息?就像我在向控制台打印注释时在括号中得到的一样:
@com.stackoverflow.XYZ(min=0, name=Jack, colors=[red, white, blue])
值得一提的是,在运行时之前我不知道 XYZ。换句话说,我想在运行时使用反射分析任意类,并在运行时提取详细的注释信息。
最佳答案
这是一个打印“红色”的人为示例(您需要添加适当的异常处理等):
public class Annotate {
@XYZ(colors="red") public void m() {}
public static void main(String[] args) throws Exception {
Annotate a = new Annotate();
Method m = a.getClass().getDeclaredMethod("m");
XYZ ann = (XYZ) m.getAnnotation(XYZ.class);
if (ann != null) {
System.out.println(ann.colors()[0]);
}
}
}
请注意,如果方法未使用 @XYZ
注释,则 ann
将为空。
关于Java:如何提取注解成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22453540/