2010-11-10 71 views
11

延伸AbstractProcessor時,可能會覆蓋init(...),但不存在「相反」的方法,將在所有回合處理後調用。Java註釋處理:我如何知道一輪是否是最後一個?

這是一個問題:當你有追加每一輪中收集到的信息相同文件,你就永遠不能關閉文件,因爲你永遠不會知道什麼時候最後一輪了。所以,該文件永遠不會關閉,並保持爲空。

使用關閉掛鉤也不起作用,掛鉤永遠不會被調用。

任何想法?

回答

4

看來,我在處理註釋的背景下「輪」的認識是錯誤的:

如前所述here

[...]在每一輪中,處理器可以 是要求處理在前一輪產生的源文件和 類文件中的 註釋的子集。 第一輪 處理的輸入是該工具的運行的初始輸入; 處理的輸入是該工具運行的初始輸入;可以將這些初始輸入 視爲虛擬第零輪處理的輸出。 [...]

因爲在我的使用情況下,我要麼不生產任何新的類文件,或者我產生他們,但需要過程他們,應該足夠多隻是爲了「計數」輪次,並且只在第一輪中進行實際工作(並且在結束時進行清理工作,例如關閉文件)。

+3

但其他註釋處理程序可能會生成文件,然後由您處理。因此你不應該依賴這個假設。 – 2016-08-31 08:19:36

相關問題