Java注解处理:如何知道当前轮次是否为最后一轮?

15

当扩展AbstractProcessor时,有可能会覆盖init(...)方法,但却没有相应的 "相反" 方法,可以在处理所有轮后调用。

这是一个问题:当您需要将每一轮收集到的信息追加到同一个文件时,您永远无法关闭该文件,因为您永远不知道最后一轮何时结束。 因此,该文件从未被关闭并保持为空白。

使用关机挂钩也不起作用,挂钩从未被调用。

有什么想法吗?

2个回答

23

看起来这就是我在寻找的!谢谢! - java.is.for.desktop

4

在注解处理的上下文中,我的对“rounds”的理解似乎是错误的:

此处所述,

[...] 每一轮中,可以要求处理器处理源和由先前一轮生成的类文件上找到的一部分注释。处理的第一轮的输入是运行工具的初始输入;这些初始输入可被视为处理的虚拟零轮的输出。 [...]

由于在我的使用情况下,我要么不会生成任何新的类文件,要么我生成它们但是不需要处理它们,所以只需要“计数”轮次,并仅在第一轮中进行实际工作(如关闭文件等清理工作)。


8
但是其他的注解处理器可能会生成文件,然后由您的处理器来处理。因此,您不应该依赖于这一假设。 - Erik Hofer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接