1 © Luxoft Training 2013 Модуль 8 Введение Задачи аннотаций Стандартные аннотации Создание собственных аннотаций 8-1 Аннотации
2 © Luxoft Training 2013Аннотации Аннотации представляют собой метаданные, которые могут добавляться в исходный код программы и семантически не влияют на нее, но могут использоваться в процессе анализа кода, компиляции и даже во время выполнения 8-2 Введение
3 © Luxoft Training 2013Аннотации В отличие от JavaDoc комментариев, которые уничтожаются при компиляции, аннотации рефлективный – сохраняются в class файле и могут быть получены с помощью механизма reflection в runtime Аннотации были введены в Java Введение
4 © Luxoft Training 2013Аннотации Метаданные, хранящиеся в аннотации позволяет задавать конфигурацию на классы. Эта конфигурация может использоваться компилятором, клиентским кодом или внешними программами 8-4 Введение
5 © Luxoft Training 2013Аннотации Можно аннотировать: Класс Метод Поля класса Параметры Пакеты И др. (полный список рассмотрим далее) 8-5 Введение
6 © Luxoft Training 2013 Модуль 8 Введение Задачи аннотаций Стандартные аннотации Создание собственных аннотаций 8-6 Аннотации
7 © Luxoft Training 2013Аннотации Основные варианты использования аннотаций включают: предоставлять необходимую информацию для компилятора; предоставлять метаданные различным инструментам для генерации кода, конфигураций и т.д.; использоваться в коде во время выполнения программного кода для контроля выполнения программы 8-7 Использование аннотаций
8 © Luxoft Training 2013 Стандартные аннотации Существуют аннотации, определенные 8-8 Аннотации, используемые компилятором
9 © Luxoft Training 2013 Стандартные – указывает компилятору на то, что элемент устарел и его не следует использовать. Указывается на классе, методе или поле Многие IDE анализируют эту аннотацию и помечают (Eclipse перечеркивает) соответствующий элемент
10 © Luxoft Training 2013 Стандартные аннотации
11 © Luxoft Training 2013 Стандартные указывает компилятору на то, что метод обязан переопределять метод родительского класса. В случае, если метод, аннотированный не переопределяет метод родительского класса (или если соответствующий метод был удален/переименован) компилятор выдает ошибку
12 © Luxoft Training 2013 Стандартные аннотации
13 © Luxoft Training 2013 Стандартные указывает компилятору игнорировать предупреждения (warning)
14 © Luxoft Training 2013 Модуль 8 Введение Задачи аннотаций Стандартные аннотации Создание собственных аннотаций 8-14 Аннотации
15 © Luxoft Training 2013 Создание собственных аннотаций Для создания аннотации используется ключевое : являются аннотациями для аннотаций 8-15 Введение
16 © Luxoft Training 2013 задает элемент, на котором может быть указана определяемая аннотация и принимает значения: TYPE FIELD METHOD PARAMETER CONSTRUCTOR LOCAL_VARIABLE ANNOTATION_TYPE PACKAGE Создание собственных аннотаций
17 © Luxoft Training 2013 указывает, где доступна определяемая аннотация и принимает значения: SOURCE определяемая аннотация доступна только в исходном коде и стирается при компиляции Создание собственных аннотаций
18 © Luxoft Training 2013 CLASS аннотация будет записана в class-файл компилятором, но не должна быть доступна во время выполнения RUNTIME - аннотация будет записана в class-файл и доступна во время выполнения через reflection Создание собственных аннотаций
19 © Luxoft Training Пример Создание собственных аннотаций
20 © Luxoft Training 2013 Можно получить аннотацию класса, метода, поля или параметра с помощью механизма reflection 8-20 Получение аннотации через reflection Создание собственных аннотаций
21 © Luxoft Training Получение аннотации через reflection Создание собственных аннотаций
22 © Luxoft Training 2013Упражнение 8-22 Упражнение 20 Использование аннотаций
23 © Luxoft Training 2013 Модуль 8 Введение Задачи аннотаций Стандартные аннотации Создание собственных аннотаций 8-23 Аннотации