Инструмент обработки аннотаций <- проверка корректной аннотации - PullRequest
4 голосов
/ 15 декабря 2011

у меня

@ColumnMetadata(index=1)
...
@ColumnMetadata(index=2)
...
@ColumnMetadata(index=3)
...

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

Как это сделать? Любые учебники / что-нибудь о APT?

1 Ответ

7 голосов
/ 15 декабря 2011

Возможно, вы хотите использовать API подключаемых аннотаций, преемник инструмента apt .Вот краткое руководство для начала работы: Java 6.0: Часть функций - 2: API-интерфейс обработки сменных аннотаций

Это примерно шаги, которые необходимо выполнить для проверки аннотаций:

  1. Создайте процессор аннотаций, он должен расширяться AbstractProcessor .
  2. Определить, какие аннотации искать, добавить:
    @SupportedAnnotationTypes(value= {"full.name.of.ColumnMetadata"})
  3. Переопределить process метод.
  4. Используйте параметр RoundEnvironment для доступа к элементам исходного кода.Какие элементы вам нужны, зависит от того, что вы хотите сделать.
    • Подход сверху вниз: getRootElements предоставляет все классы, которые вы можете отфильтровать для определенных элементов, которые вы хотите проверить.Этот метод полезен, если вы хотите проанализировать структуру кода вокруг ваших аннотаций, например, класс, к которому относятся аннотации вашего метода или свойства.
    • Подход снизу вверх: getElementsAnnotatedWith Используйте этот метод дляполучить только аннотированные элементы.Вы можете определить положение элементов, но, возможно, потребуется отслеживать ваши элементы, если вы хотите сравнить их (например, сопоставляя список аннотированных элементов с типом класса).
  5. Зациклите элементы, которые вы хотите, и получите AnnotationMirror . Получите и проверьте значения.
  6. Если вы хотите сообщить об ошибке, используйте предоставленный Messager с элементом.С помощью этой среды вы можете создавать красивые сообщения об ошибках компилятора.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...