ݺߣ

ݺߣShare a Scribd company logo
Введение в сетевые
технологии
Виталий Унгурян
unguryan@itstep.org
Аннотации
Главной задачей аннотаций является
статическое расширение классов
(именно классов, а не объектов), путём
добавления метаданных в класс, без
изменения его методов и свойств.
Внимание! Аннотации появились в языке
Java с появлением версии 1.5. В версиях
ниже 1.5 нет возможности использовать
аннотации.
Основные задачи аннотации
Информация для компилятора -
аннотации могут быть
использованы компилятором
для обнаружения ошибок
(например, @Override) или для
подавления предупреждений
(@SuppressWarnings);
Основные задачи аннотации
Дополнительная обработка кода
во время компиляции - внешнее
программное обеспечение
может использовать аннотации
для генерации кода или разного
рода файлов конфигураций;
Основные задачи аннотации
Дополнительная
функциональность кода за счёт
обработки аннотаций во время
выполнения программы -
некоторые аннотации доступны
во время выполнения
программы.
Основные задачи аннотации
Единственная разница между
интерфейсом и аннотацией - это
символ @ перед ключевым словом
interface.
Аннотация может содержать
свойства.
Ограничений аннотации
объявляемый метод не
должен иметь параметров;
объявление метода не
должно содержать ключевое
слово throws;
Ограничений аннотации
Метод должен возвращать одно
из следующих типов:
–любой примитивный тип;
–String;
–Class;
–enum;
–массив указанных типов;
Использование аннотаций
класс, интерфейс или перечисления
(enum);
свойства (поля) классов;
методы, конструкторы и параметры
методов;
локальная переменная;
блок catch;
пакет (java package);
другая аннотация.
Аннотация @Target
Аннотацией @Target указывается,
какой элемент программы будет
использоваться аннотацией.
Пример:
@Target(ElementType.TYPE)
Типы аннотации @Target:
PACKAGE - назначением
является целый пакет (package);
TYPE - класс, интерфейс, enum
или другая аннотация:
METHOD - метод класса, но не
конструктор;
PARAMETER - параметр метода;
Типы аннотации @Target:
CONSTRUCTOR - конструктор;
FIELD - поля-свойства класса;
LOCAL_VARIABLE - локальная переменная
(обратите внимание, что аннотация не может
быть прочитана во время выполнения
программы, данный тип аннотации может
использоваться только на уровне
компиляции как, например, аннотация
@SuppressWarnings);
ANNOTATION_TYPE - другая аннотация.
Типы аннотации @Target:
Также есть возможность задать
сразу несколько типов аннотации.
Пример:
@Target({ElementType.CONSTRUCTOR,
ElementType.METHOD})
Аннотация @Retention
Аннотация @Retention позволяет
указать, в какой момент жизни
программного кода будет доступна
аннотация: только в исходном коде,
в скомпилированном классе или во
время выполнения программы.
Типы аннотация @Retention
SOURCE - аннотация доступна только
в исходном коде и сбрасывается во
время создания .class файла;
CLASS - аннотация хранится в .class
файле, но недоступна во время
выполнения программы;
RUNTIME - аннотация хранится в
.class файле и доступна во время
выполнения программы.
Аннотация @Inherited
@Inherited - эта аннотация
означает, что аннотации к
которой она применяется
будут автоматически
наследоваться в дочерних
классах описанного
аннотацией класса.

More Related Content

What's hot (16)

C# Desktop. Занятие 04.
C# Desktop. Занятие 04.C# Desktop. Занятие 04.
C# Desktop. Занятие 04.
Igor Shkulipa
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernate
Unguryan Vitaliy
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.
Unguryan Vitaliy
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
Igor Shkulipa
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью.
Unguryan Vitaliy
Сервлеты
СервлетыСервлеты
Сервлеты
Unguryan Vitaliy
Java. Методы
Java. Методы Java. Методы
Java. Методы
Unguryan Vitaliy
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
Igor Shkulipa
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
metaform
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
metaform
Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.
Unguryan Vitaliy
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
metaform
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
Igor Shkulipa
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
metaform
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
Igor Shkulipa
C# Desktop. Занятие 04.
C# Desktop. Занятие 04.C# Desktop. Занятие 04.
C# Desktop. Занятие 04.
Igor Shkulipa
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.
Unguryan Vitaliy
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
Igor Shkulipa
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью.
Unguryan Vitaliy
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
Igor Shkulipa
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
metaform
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
metaform
Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.
Unguryan Vitaliy
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
metaform
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
Igor Shkulipa
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
metaform
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
Igor Shkulipa

Viewers also liked (9)

Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
Unguryan Vitaliy
JSTL
JSTLJSTL
JSTL
Unguryan Vitaliy
XML
XMLXML
XML
Unguryan Vitaliy
JDBC
JDBCJDBC
JDBC
Unguryan Vitaliy
Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в java
Unguryan Vitaliy
Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
Unguryan Vitaliy
Date & Time in Java SE 8
Date & Time in Java SE 8Date & Time in Java SE 8
Date & Time in Java SE 8
Ilya Lapitan
Spring AOP
Spring AOPSpring AOP
Spring AOP
Unguryan Vitaliy
JSP
JSPJSP
JSP
Unguryan Vitaliy

Similar to Аннотации в java (20)

Java core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.ppt
Anton Moiseenko
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения
7bits
Равиль Губайдуллин - Annotation processing
Равиль Губайдуллин - Annotation processingРавиль Губайдуллин - Annotation processing
Равиль Губайдуллин - Annotation processing
Provectus
презентация конспекта лекций
презентация конспекта лекцийпрезентация конспекта лекций
презентация конспекта лекций
student_kai
Vba программы
Vba программыVba программы
Vba программы
LidiKashka
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAP
mikhailshurgulaya
Programming Concepts
Programming ConceptsProgramming Concepts
Programming Concepts
Mister_Lee
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
metaform
10 инф
10 инф10 инф
10 инф
Аня Иванова
9 структура компонентных приложений
9 структура компонентных приложений9 структура компонентных приложений
9 структура компонентных приложений
KewpaN
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6
Technopark
TypeScript
TypeScriptTypeScript
TypeScript
GetDev.NET
C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5
Technopark
Семинар ФКН: современные подходы к разработке ПО - часть 2
Семинар ФКН: современные подходы к разработке ПО - часть 2Семинар ФКН: современные подходы к разработке ПО - часть 2
Семинар ФКН: современные подходы к разработке ПО - часть 2
Andrii Gakhov
Java core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.ppt
Anton Moiseenko
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения
7bits
Равиль Губайдуллин - Annotation processing
Равиль Губайдуллин - Annotation processingРавиль Губайдуллин - Annotation processing
Равиль Губайдуллин - Annotation processing
Provectus
презентация конспекта лекций
презентация конспекта лекцийпрезентация конспекта лекций
презентация конспекта лекций
student_kai
Vba программы
Vba программыVba программы
Vba программы
LidiKashka
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAP
mikhailshurgulaya
Programming Concepts
Programming ConceptsProgramming Concepts
Programming Concepts
Mister_Lee
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
metaform
9 структура компонентных приложений
9 структура компонентных приложений9 структура компонентных приложений
9 структура компонентных приложений
KewpaN
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6
Technopark
C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5
Technopark
Семинар ФКН: современные подходы к разработке ПО - часть 2
Семинар ФКН: современные подходы к разработке ПО - часть 2Семинар ФКН: современные подходы к разработке ПО - часть 2
Семинар ФКН: современные подходы к разработке ПО - часть 2
Andrii Gakhov

More from Unguryan Vitaliy (13)

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование.
Unguryan Vitaliy
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
Unguryan Vitaliy
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
Unguryan Vitaliy
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
Unguryan Vitaliy
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
Unguryan Vitaliy
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
Unguryan Vitaliy
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
Unguryan Vitaliy
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
Unguryan Vitaliy
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылок
Unguryan Vitaliy
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередь
Unguryan Vitaliy
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
Unguryan Vitaliy
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.
Unguryan Vitaliy
List - списки
List - списки List - списки
List - списки
Unguryan Vitaliy
Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование.
Unguryan Vitaliy
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
Unguryan Vitaliy
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
Unguryan Vitaliy
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
Unguryan Vitaliy
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
Unguryan Vitaliy
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
Unguryan Vitaliy
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
Unguryan Vitaliy
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылок
Unguryan Vitaliy
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередь
Unguryan Vitaliy
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
Unguryan Vitaliy
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.
Unguryan Vitaliy

Аннотации в java

  • 2. Аннотации Главной задачей аннотаций является статическое расширение классов (именно классов, а не объектов), путём добавления метаданных в класс, без изменения его методов и свойств. Внимание! Аннотации появились в языке Java с появлением версии 1.5. В версиях ниже 1.5 нет возможности использовать аннотации.
  • 3. Основные задачи аннотации Информация для компилятора - аннотации могут быть использованы компилятором для обнаружения ошибок (например, @Override) или для подавления предупреждений (@SuppressWarnings);
  • 4. Основные задачи аннотации Дополнительная обработка кода во время компиляции - внешнее программное обеспечение может использовать аннотации для генерации кода или разного рода файлов конфигураций;
  • 5. Основные задачи аннотации Дополнительная функциональность кода за счёт обработки аннотаций во время выполнения программы - некоторые аннотации доступны во время выполнения программы.
  • 6. Основные задачи аннотации Единственная разница между интерфейсом и аннотацией - это символ @ перед ключевым словом interface. Аннотация может содержать свойства.
  • 7. Ограничений аннотации объявляемый метод не должен иметь параметров; объявление метода не должно содержать ключевое слово throws;
  • 8. Ограничений аннотации Метод должен возвращать одно из следующих типов: –любой примитивный тип; –String; –Class; –enum; –массив указанных типов;
  • 9. Использование аннотаций класс, интерфейс или перечисления (enum); свойства (поля) классов; методы, конструкторы и параметры методов; локальная переменная; блок catch; пакет (java package); другая аннотация.
  • 10. Аннотация @Target Аннотацией @Target указывается, какой элемент программы будет использоваться аннотацией. Пример: @Target(ElementType.TYPE)
  • 11. Типы аннотации @Target: PACKAGE - назначением является целый пакет (package); TYPE - класс, интерфейс, enum или другая аннотация: METHOD - метод класса, но не конструктор; PARAMETER - параметр метода;
  • 12. Типы аннотации @Target: CONSTRUCTOR - конструктор; FIELD - поля-свойства класса; LOCAL_VARIABLE - локальная переменная (обратите внимание, что аннотация не может быть прочитана во время выполнения программы, данный тип аннотации может использоваться только на уровне компиляции как, например, аннотация @SuppressWarnings); ANNOTATION_TYPE - другая аннотация.
  • 13. Типы аннотации @Target: Также есть возможность задать сразу несколько типов аннотации. Пример: @Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
  • 14. Аннотация @Retention Аннотация @Retention позволяет указать, в какой момент жизни программного кода будет доступна аннотация: только в исходном коде, в скомпилированном классе или во время выполнения программы.
  • 15. Типы аннотация @Retention SOURCE - аннотация доступна только в исходном коде и сбрасывается во время создания .class файла; CLASS - аннотация хранится в .class файле, но недоступна во время выполнения программы; RUNTIME - аннотация хранится в .class файле и доступна во время выполнения программы.
  • 16. Аннотация @Inherited @Inherited - эта аннотация означает, что аннотации к которой она применяется будут автоматически наследоваться в дочерних классах описанного аннотацией класса.