2010-11-10 4 views
11

При расширении AbstractProcessor существует возможность переопределить init(...), но нет никакого «противоположного» метода, который будет вызываться после все раундов были обработаны.Обработка аннотации Java: как узнать, последний раунд?

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

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

Любые идеи?

ответ

4

кажется, что мое понимание «раундов» в контексте обработки аннотаций ошибались:

Как указано here,

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

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

+3

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

 Смежные вопросы

  • Нет связанных вопросов^_^