扩展AbstractProcessor
时,有可能覆盖init(...)
,但没有“对立”方法,在处理所有轮次后调用。 / p>
这是一个问题:当您必须将每轮收集的信息附加到相同文件时,您无法关闭该文件,因为您永远无法知道最后轮是。因此,文件永远不会关闭并保持为空。
使用关闭钩子也不起作用,永远不会调用钩子。
有什么想法吗?
答案 0 :(得分:19)
Processor.process
方法包含RoundEnvironment
类型的参数。也许RoundEnvironment.processingOver
方法可能有所帮助。
答案 1 :(得分:4)
在注释处理的上下文中,我对“回合”的理解似乎是错误的:
如上所述here,
[...]每轮,处理器可以 被要求处理一部分 在源和上找到的注释 类文件由前一轮制作。 第一轮投入 处理是a的初始输入 运行工具;这些初始投入 可以视为一个输出 虚拟第0轮处理。 [...]
因为在我的用例中我要么没有生成任何新的类文件,要么我生成它们但不需要处理它们应该只是“计算”轮次,只在第一轮中进行实际工作(并进行清理工作,例如在文件结束时关闭文件)。