Автоматическое удаление файла, сгенерированного процессором аннотаций Java 7, при удалении аннотации в исходном файле

#java #annotations

#java #аннотации

Вопрос:

Я пишу процессор аннотаций Java для исходного кода Java 7. И, конечно же, я могу использовать javax.annotation.обработка.файл, который поможет мне автоматически сгенерировать файл в каталоге проекта.

пример: аннотация @becare

 public interface test {
   @becare
   int compare(int a, int b);
}
  

задача моего процессора аннотаций заключается в том, что когда он обнаруживает данную аннотацию @becare, он сгенерирует файл для меня.

Мой вопрос заключается в том, что если я удалю аннотацию из предыдущего фрагмента кода, могу ли я позволить обработчику аннотаций знать об этом и удалить только что созданный файл?

Или есть какой-либо обходной путь, который поможет мне достичь этого?

Заранее спасибо.

Ответ №1:

Когда вы создаете сгенерированный файл, вы объявляете, что он связан с вашим «тестовым» интерфейсом следующим образом:


Elements eltUtils = processingEnv.getElementUtils();
filer.createSourceFile("testGenerated", eltUtils.getTypeElement("test"));

Когда источник будет удален, процессор удалит сгенерированный файл, как говорит javadoc:

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