扩展时AbstractProcessor
,有可能覆盖init(...)
,但没有“相反”的方法,将在处理完所有轮次后调用。
这是一个问题:当您必须将每轮收集的信息附加到同一个文件时,您永远无法关闭文件,因为您永远无法知道上一轮是什么时候。因此,该文件永远不会关闭并保持为空。
使用关闭钩子也不起作用,永远不会调用该钩子。
有任何想法吗?
扩展时AbstractProcessor
,有可能覆盖init(...)
,但没有“相反”的方法,将在处理完所有轮次后调用。
这是一个问题:当您必须将每轮收集的信息附加到同一个文件时,您永远无法关闭文件,因为您永远无法知道上一轮是什么时候。因此,该文件永远不会关闭并保持为空。
使用关闭钩子也不起作用,永远不会调用该钩子。
有任何想法吗?
该Processor.process
方法包括一个类型的参数RoundEnvironment
。也许该RoundEnvironment.processingOver
方法会有所帮助。
看来我在注释处理的上下文中对“回合”的理解是错误的:
如此处所述,
[...] 在每一轮中,可能会要求处理器处理在前一轮生成的源文件和类文件中找到的注释子集。第一轮处理的输入是工具运行的初始输入;这些初始输入可以看作是虚拟第零轮处理的输出。[...]
由于在我的用例中,我要么不生成任何新的类文件,要么生成它们但不需要处理它们,因此仅“计数”轮次并仅在第一个轮次中进行实际工作就足够了(并且正在最后清理工作,例如关闭文件)。