2011-01-25 2 views
1

Hibernate Search, Hibernate, Struts2 ... Я вижу больше примеров ... В тех же примерах я вижу аннотацию на поле. Другое по методу get/set .. Есть различия? Или случайно ..Java Аннотация: По свойствам или по методу? Какая разница

Надеюсь, это не глупый вопрос!

Saluti!

Луиджи

+0

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

ответ

3

разница зависит от аннотаций и как она используется. Например, весной вы можете использовать аннотацию @Controller только для класса. Это говорит Spring, что класс является контроллером.

Что касается методов, то @RequestMapping представляет собой аннотацию, которая идет по методу. Для свойств вы можете иметь аннотации для проверки, такие как @NotNull (в валидаторе Hibernate).

Аннотации определенно не случайны; они несут смысл и могут влиять на поведение кода.

Из Java documentation относительно аннотаций:

Аннотации предоставляют данные о программе, которая не является частью самой программы . У них нет прямого эффекта на действие кода , который они комментируют.

аннотаций имеют ряд применений, среди них:

  • Информация для компилятора - Аннотации могут быть использованы компилятором для обнаружения ошибок или подавления предупреждения.

  • Компилятор времени и развертывание времени обработки - Программные средства могут обрабатывать информацию аннотацию генерации кода, XML-файлы и так далее .

  • Обработка времени выполнения - Некоторые аннотации доступны для определения , рассмотренных во время выполнения.

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

Вы можете указать, что аннотацию можно аннотировать, указав элементы (с помощью @Target аннотацию) при определении собственной аннотации.

+0

Мой вопрос родился, работая с поиском Hibernate. Я видел аннотацию, иногда по методам, а иногда и по полю. Мой коллега сказал, что «соглашение» находится на методе ... Но я не уверен в этом ... –

0

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

В Java есть поля и методы, но они используются для имитации свойств в соответствии с соглашениями Java Bean, т. Е.у вас есть общедоступный setX() и метод getX(), который часто (но не всегда) записывает и читает личное поле x. Они связаны между собой условием именования, а не языковым механизмом.

Из-за этого большинство фреймворков, которые используют аннотации для таких свойств (например, для сопоставления персистентности или инъекции зависимостей), являются гибкими и позволяют вам аннотировать либо поле, либо метод get или set.

Смежные вопросы