Как работает аннотации внутри Java или любого другого языка программирования? - PullRequest
12 голосов
/ 08 июля 2011

Мне трудно понять важность и преимущества аннотаций, и поэтому у меня есть два вопроса относительно них:

  1. Каковы преимущества аннотаций по сравнению с конфигурацией XML?
  2. КакАннотации работают внутренне?
  3. Достаточно ли справедливо сказать, что аннотация тесно связывает приложение, тогда как с XML Configuration Application слабо связана?

Буду признателен за и против сравнения с XML Configuration с примеромтак что мне было бы намного полезнее понять.

С уважением.

Ответы [ 3 ]

4 голосов
/ 08 июля 2011

На первый вопрос

Лично я чувствую, что есть два критерия

  1. Могут ли аннотации упростить метаданные?

    Если аннотации не уменьшают объем метаданных, которые вы должны предоставить (в большинстве случаев они предоставляют), вам не следует использовать аннотацию.

  2. Могут ли изменения в поведении разрыва метаданных в вашем приложении?

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

На второй вопрос


Важные ссылки:

0 голосов
/ 08 июля 2011

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

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

Например, если вы используете аннотации Hibernate, вы связываете объекты модели с помощью Hibernate.Если вы решите переключиться на другую платформу, вам придется вырывать аннотации Hibernate из кода.

Но на практике маловероятно, что вы будете часто менять каркасы.Как правило, существует много других причин, по которым изменение структуры на основе существующего кода может быть трудным.Очень часто аннотации являются хорошим выбором.

Что касается того, как они работают, аннотации являются частью языка и обрабатываются компилятором и другими инструментами и, в зависимости от сохранения, могут быть включены в производимый байт-код для использования вво время выполнения.В конечном счете, именно пользователь должен решить, как использовать аннотации.

0 голосов
/ 08 июля 2011

Чтобы ответить на первый вопрос, в IMO самое большое преимущество - это возможность интеграции компилятора. Я могу написать обработчик аннотаций, который может проверять некоторую семантику, связанную с применением аннотации. Такая проверка во время компиляции невозможна (или, по крайней мере, будет намного сложнее), если бы та же информация была частью XML-документа.

Чтобы ответить на второй вопрос, аннотации на самом деле сами по себе не «работают» в том смысле, что у них нет какой-либо внутренней семантики выполнения. Они являются объектами уровня источника, которые могут или не могут быть сохранены в файле класса. Можно обработать во время компиляции источника, и если они были сохранены в файле класса, к нему можно получить доступ через отражение.

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