Подтвердить что ты не робот

Обработка аннотации Java: как узнать, является ли последний раундом?

При расширении AbstractProcessor существует возможность переопределить init(...), но нет никакого "противоположного" метода, который вызывается после того, как были обработаны раунды all.

Это проблема: когда вам нужно добавить информацию, собранную во время каждого раунда, в тот же файл, вы просто не сможете закрыть файл, потому что вы никогда не узнаете, когда последний раунд был. Таким образом, файл никогда не закрывается и остается пустым.

Использование крюка отключения также не работает, крючок никогда не вызывается.

Любые идеи?

4b9b3361

Ответ 2

Похоже, что мое понимание "раундов" в контексте обработки аннотаций было неправильным:

Как указано здесь,

[...] В каждом раунде процессор может попросить обработать подмножество аннотации, найденные на источнике и класс , созданный предыдущим раундом. Входы в первый раунд обработки являются исходными запуск инструмента; эти начальные входы можно рассматривать как выход виртуальный нулевой раунд обработки. [...]

Так как в моем случае использования я либо не производя никаких новых файлов классов, либо я их создаю, но не должен обрабатывать их, должно быть достаточно просто "подсчитать" раунды и выполнять фактическую работу только в первом (и выполнять очистку работы, например, закрытие файлов, в конце ее).