Описание тега annotation-processing

Обработчик аннотаций - это плагин для компилятора Java. Обработчик аннотаций может делать такие вещи, как анализировать объявления, вызывать ошибки компиляции и создавать новые единицы компиляции.

Обработчик аннотаций - это плагин для компилятора Java.

Обработчик аннотаций - это экземпляр javax.annotation.processing.Processor чья process метод вызывается во время компиляции.

После вызова процессор может выполнять такие действия, как:

  • Анализируйте части абстрактного синтаксического дерева, в первую очередь объявления через javax.lang.model.element и типы через javax.lang.model.type.
  • Вызывать ошибки компиляции и предупреждения (аналогично тому, как @Override аннотация работает) через Messager.
  • Создавать новые единицы компиляции (т.е. файлы исходного кода) через Filer которые впоследствии компилируются.

Примечания о текущих ограничениях обработчиков аннотаций

  • Обработчики аннотаций могут только создавать новые единицы компиляции, но не изменять существующие единицы компиляции. Некоторые обработчики аннотаций, такие как Project Lombok, достигают последнего с помощью недокументированного внутреннего Javac API.
  • Существующий API в Java Platform SE ограничен только анализом объявлений, таких как объявления классов и объявления методов. Существует API-интерфейс Compiler Tree, который позволяет анализировать полное абстрактное синтаксическое дерево, но он в значительной степени недокументирован и еще не является частью SE.

Ресурсы