如何使用AbstractProcessor访问另一个注解中的注解 - 不使用反射

3

考虑到这些类型:

@Retention(RUNTIME)
@Target(ANNOTATION_TYPE)
public @interface Annotation1 {

}

@Retention(RUNTIME)
@Target(TYPE)
@Annotation1
public @interface Annotation2 {

}

@Annotation2
public class Mock {

}

我能够使用AbstractProcessorMock类中访问Annotation2,方法如下:

Element element = //obtained from RoundEnvironment instance.
AnnotationMirror annotationMirror = element.getAnnotationMirrors().get(0);

但是,当我查询在之前的注解镜像中标注的注解 - 这是Annotation2的镜像时,我得到了一个空列表。

annotationMirror
    .getAnnotationType()
    .asElement()
    .getAnnotationMirrors();

我认为这个问题与这个问题有关。


我认为这是因为你将@Annotation2应用于一个类,而这不是它的有效目标 - 你已经指定该注解仅适用于方法和参数。 - yole
抱歉,那是一个打错字。我已经更新了问题以修复它。 - Víctor Albertos
你为什么要从“annotationMirror”中获取注释?你想要实现什么目标? - ck1
因为我需要为每个使用Annotation1注释的类处理并注释的类创建一个新的Java类。 - Víctor Albertos
1个回答

2

这个问题中发布的代码运行良好。

annotationMirror
    .getAnnotationType()
    .asElement()
    .getAnnotationMirrors();

这个问题与测试用的源代码中缺少一个导入有关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接