You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在元注解@A的注解处理器中获取被@B标注的类C?

解决方法

在你的处理器代码中,拿到被@A标注的@B注解类型后,需要进一步通过注解处理器的RoundEnvironment获取所有被@B标注的元素,其中就包含类C。具体修改如下:

public class AProcessor extends AbstractProcessor {

    @Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
        for (Element annotatedElement : roundEnv.getElementsAnnotatedWith(A.class)) {
            // 确保当前元素是注解类型(@A的Target限定了这一点,判断更严谨)
            if (annotatedElement.getKind() == ElementKind.ANNOTATION_TYPE) {
                // 转换为TypeElement,代表@B这个注解的类型定义
                TypeElement bAnnotationType = (TypeElement) annotatedElement;
                // 获取所有被@B标注的元素,这里就包含类C
                Set<? extends Element> targetElements = roundEnv.getElementsAnnotatedWith(bAnnotationType);
                
                for (Element targetElement : targetElements) {
                    // 这里处理类C,比如获取类名、类型信息等
                    System.out.println("找到目标类:" + targetElement.getSimpleName());
                }
            }
        }
        return true;
    }
}

核心逻辑说明

  1. 先确认当前拿到的annotatedElement是注解类型(即@B),因为@A的@Target限定了只能标注在注解上
  2. 将元素转为TypeElement,它代表注解的类型元数据
  3. 调用roundEnv.getElementsAnnotatedWith()并传入@B的TypeElement,就能检索到所有被@B标注的元素,比如示例中的类C

内容的提问来源于stack exchange,提问作者thmasker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:22:31