Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Для чего нужны аннотации


Автор: kkin 19.7.2011, 08:16
Добрый день. 
Хотел узнать что такое аннотации, где именно и как использовать? 

 smile 

Автор: danilych 19.7.2011, 08:39
Аннотации призваны упростить программирование, но они обычно обрабатываются не компилятором java, а сторонней программой. Для примера можно привести пример с обработкой транзакций - тут код получается очень тривиальным, т.е. перед выполнением запросов в БД, нужно открыть транзакцию а по окончании ее подтвердить или откатить, эти операции необходимо писать из метода в метод, но в Spring framework есть аннотации для работы с транзакциями и они используются для автогенерации кода (это одно из применений аннотаций). Процесс происходит так - сначала обрабатываются аннотации какой то сторонней программой/компилятором, а затем вступает в дело компилятор java, по крайне мере такое у меня понимание.
В hibernate аннотации используются для объявления таблиц БД на основе классов java. В Spring MVC аннотации позволяют указывать методы класса для обработки запросов POST и GET и д.р. В общем, аннотации штука очень полезная и применяется очень широко - своего рода аналог декларативного программирования.

Автор: Farmazon 19.7.2011, 08:56
аннотация - это надпись(бляшка) которая навешивается на метод, класс, поле, параметр и проч.

Эта информация не обрабатывается компилятором, но служит вспомогательной для работы некоторых библиотек(её ведь можно прочитать с помощью Reflection).

Автор: danilych 19.7.2011, 09:16
Цитата

Эта информация не обрабатывается компилятором,


а что по поводу аннотации @Overriden ?

Автор: kkin 19.7.2011, 09:44
Спасибо danilych, 
Farmazon, 
Ситуация начинает проясняться, теперь бы получить примеры из жизни, что бы полностью понимать систему.

Автор: Farmazon 19.7.2011, 10:03
По идее, Override не является обязательной, введена для удобства. 

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

Вот определение:
Цитата

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


а вот http://javatutor.net/articles/annotations-in-java-primer-1


Автор: danilych 19.7.2011, 10:09
Цитата

Ситуация начинает проясняться, теперь бы получить примеры из жизни, что бы полностью понимать систему. 


Лучшим способом будет изучение уже существующих фреймворков - в Spring и Hibernate примеров куча. Могу посоветовать Apress - Spring Recipes. A Problem-Solution Approach 3.0.

Автор: kkin 19.7.2011, 10:30
Предоставленная вами информация очень полезна.

Сейчас пробую реализовать связь с БД при помощи netBeans и технологии Hibernate 

Автор: LSD 19.7.2011, 10:43
Цитата(danilych @  19.7.2011,  10:16 Найти цитируемый пост)
а что по поводу аннотации @Overriden ? 

Аннотации бывают http://download.oracle.com/javase/1,5.0/docs/api/java/lang/annotation/RetentionPolicy.html:
1. SOURCE - существуют только во время компиляции и влияют только на компиляцию, в рантайме не доступны. @Override это как раз такая аннотация. К компилятору можно подключить свой процессор аннотаций, например как это сделано в http://code.google.com/p/cofoja/.
2. RUNTIME - добавляются к классу и доступны во время работы приложения, через рефлексию. Примеров использования куча: Spring, Hibernate, JEE 5.0.
3. CLASS - есть в классе, но в рантайме не доступны. Используются достаточно редко, в основном тулами которые постпроцессят классы типа GWT.

Автор: AntonSaburov 20.7.2011, 14:01
Можно почитать в статье - http://java-course.ru/articles/articles.php?name=java15
И можно посмотреть реальные примеры использования - http://java-course.ru/students/students.php?name=part18

Автор: kkin 20.7.2011, 14:06
AntonSaburov,  благодарю то что необходимо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)