2010-11-10 70 views
11

延伸AbstractProcessor时,可能会覆盖init(...),但不存在“相反”的方法,将在所有回合处理后调用。Java注释处理:我如何知道一轮是否是最后一个?

这是一个问题:当你有追加每一轮中收集到的信息相同文件,你就永远不能关闭文件,因为你永远不会知道什么时候最后一轮了。所以,该文件永远不会关闭,并保持为空。

使用关闭挂钩也不起作用,挂钩永远不会被调用。

任何想法?

回答

4

看来,我在处理注释的背景下“轮”的认识是错误的:

如前所述here

[...]在每一轮中,处理器可以 是要求处理在前一轮产生的源文件和 类文件中的 注释的子集。 第一轮 处理的输入是该工具的运行的初始输入; 处理的输入是该工具运行的初始输入;可以将这些初始输入 视为虚拟第零轮处理的输出。 [...]

因为在我的使用情况下,我要么不生产任何新的类文件,或者我产生他们,但需要过程他们,应该足够多只是为了“计数”轮次,并且只在第一轮中进行实际工作(并且在结束时进行清理工作,例如关闭文件)。

+3

但其他注释处理程序可能会生成文件,然后由您处理。因此你不应该依赖这个假设。 – 2016-08-31 08:19:36

相关问题