我有一个我已经实现的自定义注释,我想使用注释处理器来生成我的应用程序中使用该特定注释的所有类的列表。
我发现this tutorial描述了如何使用注释处理器生成类文件,因此使用我的注释为每个类生成一个类应该很容易。
我无法弄清楚我是如何将所有这些信息收集到一个类中的。似乎没有办法修改类,所以一旦第一次生成类,我就无法将新项添加到列表中。
有没有办法使用注释处理器生成一个方法,该方法将返回应用中使用特定注释注释的所有类的列表?
答案 0 :(得分:4)
生成的类不一定必须与正在处理的输入类一一对应。另外,您可以通过RoundEnvironment
搜索使用给定注释注释的类(元素):
roundEnvironment.getElementsAnnotatedWith(MyAnnotation.class)
通过这种方法,您可以使用一个方法生成一个类,该方法返回找到的类的集合。
有几个问题要强调:
ErrorType
。RoundEnvironmnet
方法返回,因此不会包含外部库中的类。巧合的是,我最近创建了一个类似的项目,可以满足您的需求:
https://github.com/johncarl81/silver
Silver非常重要,它使用大量的库代码来完成任务,但它可能会让您了解可能的事情。