Добавляют ли аннотации Java нотацию или функциональность? - PullRequest
4 голосов
/ 01 апреля 2010

Используются ли аннотации Java для добавления функциональности в код Java помимо простого добавления документации о том, что происходит в коде? Какие наиболее продвинутые / сложные функции вы можете добавить к своему коду с помощью аннотации?

Ответы [ 4 ]

2 голосов
/ 01 апреля 2010

Для аннотации нужен инструмент, чтобы среагировать на него.Если такого инструмента не существует, аннотация является просто обозначением.«Инструментом» может быть агент на основе APT или некоторый фрагмент кода, который использует отражение (например, JUnit's @Test).

Несколько аннотаций распознаются компилятором Java и поэтому имеют предопределенныесемантика: @Override, @Deprecated, @Target.

2 голосов
/ 01 апреля 2010

Аннотации в основном не больше, чем тег (с необязательными дополнительными данными) в классе / методе / поле. Другой код (библиотеки или инструменты) может обнаруживать эти теги и выполнять функциональность в зависимости от найденных аннотаций. Я не вижу реального ограничения на сложность функциональности, возможно, добавленной аннотациями. Это может, например, эмулировать AOP (добавление функциональности до или после метода с аннотацией).

2 голосов
/ 01 апреля 2010

Аннотации как таковые только добавляют информацию (метаданные) в класс.

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

Например, вы можете использовать apt для генерации классов на основе информации, предоставленной аннотацией.

1 голос
/ 01 апреля 2010

Я хотел бы понимать аннотации как способ документировать ваш код машиночитаемым способом. Например, в Hibernate вы можете указать всю информацию о постоянстве для ваших объектов в виде аннотаций. Это непосредственно для вас, а не в удаленном XML-файле. Но также доступен для чтения инструментом для генерации конфигураций, схем баз данных и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...