gpt4 book ai didi

java - 使用注释处理器创建具有特定注释的类列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:18 25 4
gpt4 key购买 nike

我有一个已实现的自定义注解,我想使用注解处理器生成我的应用中使用该特定注解的所有类的列表。

我找到了 this tutorial它描述了如何使用注释处理器生成类文件,因此使用我的注释为每个类生成一个类应该很容易。

我想不通的是如何将所有这些信息收集到一个类中。似乎没有修改类的方法,因此在第一次生成类后我无法将新项目附加到列表中。

有没有一种方法可以使用注解处理器来生成一个方法,该方法将返回应用中所有用特定注解进行注解的类的列表?

最佳答案

生成的类不一定要与正在处理的输入类一一对应。另外,您可以通过 RoundEnvironment 搜索使用给定注释进行注释的类(元素):

roundEnvironment.getElementsAnnotatedWith(MyAnnotation.class)

由此您可以生成一个类,该类的方法返回找到的类的集合。

有几个问题需要强调:

  • 注释处理器可以与其他注释处理器一起运行,因此必须处理编译时生成的类。为此,Java 批注处理是轮流执行的,以允许处理器捕获其他处理器的输出。为了与其他处理器兼容,您需要妥善处理 ErrorType
  • RoundEnvironmnet 方法仅返回当前编译过程中的类,因此不会包含外部库中的类。
  • IDE(咳咳 Eclipse)以不同方式实现 Java 的注释处理功能,这对于像我所描述的需要完全非部分编译的处理器来说可能是个问题。

巧合的是,我最近创建了一个类似的项目来满足您的需求:

https://github.com/johncarl81/silver

Silver 在很大程度上是一个 WIP,使用大量库代码来完成任务,但它可能会让您了解什么是可能的。

关于java - 使用注释处理器创建具有特定注释的类列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21461659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com