emm*_*mby 7 java annotations annotation-processing java-bytecode-asm
我有一个我已实现的自定义注释,我想使用注释处理器生成我的应用程序中使用该特定注释的所有类的列表.
我发现本教程描述了如何使用注释处理器生成类文件,因此使用我的注释为每个类生成一个类应该很容易.
我无法弄清楚的是我如何将所有这些信息收集到一个类中.似乎没有办法修改类,所以一旦第一次生成类,我就无法将新项添加到列表中.
有没有办法使用注释处理器生成一个方法,该方法将返回应用程序中使用特定注释注释的所有类的列表?
生成的类不必与正在处理的输入类一一对应。此外,您可以通过以下方式搜索使用给定注释进行注释的类(元素)RoundEnvironment:
roundEnvironment.getElementsAnnotatedWith(MyAnnotation.class)
Run Code Online (Sandbox Code Playgroud)
由此,您可以使用返回找到的类的集合的方法生成单个类。
围绕此要强调的几个问题:
ErrorType.RoundEnvironmnet因此不会包含外部库中的类。巧合的是,我最近创建了一个类似的项目,它可以满足您的需求:
https://github.com/johncarl81/silver
Silver 在很大程度上是一个 WIP,并使用了大量库代码来完成任务,但它可能会让您了解什么是可能的。