我有几个使用Java注解处理器执行的检查,但我还想对未注释的类型进行检查。
例如,假设我有一个注解@Responsible(name="xyz") ,如何最好地接入编译过程以强制要求所有顶层类型都包含注释?
在我的当前实现中,我依赖于两个注解,期望的注解(Responsible)和一个包级别的注解。即使没有期望的注解存在,后者也用于“启动”注解处理器。然后,在触发的注解处理器内部,我搜索并过滤磁盘上的Java文件(使用传递给编译器的参数),以收集所有要处理的文件,并在处理器正在处理的带注释的类型对应的Java文件时对它们进行过滤。这样做的话,如果有人提交了一个没有指定注解的新文件,则构建将失败。
有没有一种更简洁的方法来查找“非注释”的类型呢?
例如,假设我有一个注解@Responsible(name="xyz") ,如何最好地接入编译过程以强制要求所有顶层类型都包含注释?
在我的当前实现中,我依赖于两个注解,期望的注解(Responsible)和一个包级别的注解。即使没有期望的注解存在,后者也用于“启动”注解处理器。然后,在触发的注解处理器内部,我搜索并过滤磁盘上的Java文件(使用传递给编译器的参数),以收集所有要处理的文件,并在处理器正在处理的带注释的类型对应的Java文件时对它们进行过滤。这样做的话,如果有人提交了一个没有指定注解的新文件,则构建将失败。
有没有一种更简洁的方法来查找“非注释”的类型呢?
Element#getEnclosedElements
无法遍历子包,我将使用“*”处理器和roundEnv.getRootElements()
进行更深入的调查。 - Matthieu BROUILLARDString#split
自行获取子包 :) - user1643723