这可能是标准的Java 8教科书问题,但我一直在努力寻找答案。
我在匿名类中声明了一个变量
C c1 = new C () {
@Anno1(sequence=1) @Anno2 StringVariable s = new @Anno3 StringVariable ("b");
}
我有一个注释处理器需要检测注释了@Anno2
的变量是否也注明了@Anno3
并对返回的值做了一些特别的事情(在我的例子中,调用一个额外的方法)赋予StringVariable)。
然而,我无法检测到@ Anno3的存在。我怎么得到它?
我的注释是: Anno1,Anno2,Anno3都有类似的定义
@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.FIELD, ElementType.TYPE_USE, ElementType.PARAMETER})
public @interface Anno3 {}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented
public @interface Anno1 {
int sequence();
}
和Anno2是
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented
public @interface Anno2 {}