当扩展AbstractProcessor
时,有可能会覆盖init(...)
方法,但却没有相应的 "相反" 方法,可以在处理所有轮后调用。
这是一个问题:当您需要将每一轮收集到的信息追加到同一个文件时,您永远无法关闭该文件,因为您永远不知道最后一轮何时结束。 因此,该文件从未被关闭并保持为空白。
使用关机挂钩也不起作用,挂钩从未被调用。
有什么想法吗?
当扩展AbstractProcessor
时,有可能会覆盖init(...)
方法,但却没有相应的 "相反" 方法,可以在处理所有轮后调用。
这是一个问题:当您需要将每一轮收集到的信息追加到同一个文件时,您永远无法关闭该文件,因为您永远不知道最后一轮何时结束。 因此,该文件从未被关闭并保持为空白。
使用关机挂钩也不起作用,挂钩从未被调用。
有什么想法吗?
Processor.process
方法包括一个类型为 RoundEnvironment
的参数。也许 RoundEnvironment.processingOver
方法能够提供帮助。
在注解处理的上下文中,我的对“rounds”的理解似乎是错误的:
如此处所述,
[...] 每一轮中,可以要求处理器处理源和由先前一轮生成的类文件上找到的一部分注释。处理的第一轮的输入是运行工具的初始输入;这些初始输入可被视为处理的虚拟零轮的输出。 [...]
由于在我的使用情况下,我要么不会生成任何新的类文件,要么我生成它们但是不需要处理它们,所以只需要“计数”轮次,并仅在第一轮中进行实际工作(如关闭文件等清理工作)。