#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:
Если исходные элементы отсутствуют, передавать их не нужно. Эта информация может использоваться в инкрементной среде для определения необходимости повторного запуска процессоров или удаления сгенерированных файлов. Неинкрементные среды могут игнорировать информацию об исходном элементе.