延伸AbstractProcessor
時,可能會覆蓋init(...)
,但不存在「相反」的方法,將在所有回合處理後調用。Java註釋處理:我如何知道一輪是否是最後一個?
這是一個問題:當你有追加每一輪中收集到的信息相同文件,你就永遠不能關閉文件,因爲你永遠不會知道什麼時候最後一輪了。所以,該文件永遠不會關閉,並保持爲空。
使用關閉掛鉤也不起作用,掛鉤永遠不會被調用。
任何想法?
延伸AbstractProcessor
時,可能會覆蓋init(...)
,但不存在「相反」的方法,將在所有回合處理後調用。Java註釋處理:我如何知道一輪是否是最後一個?
這是一個問題:當你有追加每一輪中收集到的信息相同文件,你就永遠不能關閉文件,因爲你永遠不會知道什麼時候最後一輪了。所以,該文件永遠不會關閉,並保持爲空。
使用關閉掛鉤也不起作用,掛鉤永遠不會被調用。
任何想法?
Processor.process
方法包括類型爲RoundEnvironment
的參數。也許RoundEnvironment.processingOver
方法可以有所幫助。
看來,我在處理註釋的背景下「輪」的認識是錯誤的:
如前所述here,
[...]在每一輪中,處理器可以 是要求處理在前一輪產生的源文件和 類文件中的 註釋的子集。 第一輪 處理的輸入是該工具的運行的初始輸入; 處理的輸入是該工具運行的初始輸入;可以將這些初始輸入 視爲虛擬第零輪處理的輸出。 [...]
因爲在我的使用情況下,我要麼不生產任何新的類文件,或者我產生他們,但不需要過程他們,應該足夠多隻是爲了「計數」輪次,並且只在第一輪中進行實際工作(並且在結束時進行清理工作,例如關閉文件)。
但其他註釋處理程序可能會生成文件,然後由您處理。因此你不應該依賴這個假設。 – 2016-08-31 08:19:36
這似乎是我正在尋找!謝謝! – 2012-03-03 20:18:36