Java Аннотация: По свойству или по методу? Какая разница - PullRequest
1 голос
/ 26 января 2011

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

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

Saluti!

Luigi

Ответы [ 2 ]

3 голосов
/ 26 января 2011

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

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

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

Из документации Java относительно аннотаций:

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

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

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

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

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

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

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

0 голосов
/ 26 января 2011

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

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

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

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