Метаданные
n В основе механизма метаданных лежат так называемые аннотации
n Аннотация – это «интерфейс» специфического вида, позволяющий задавать описания классов и их элементов
n Пример объявления аннотации:
@interface MyAnnotation {
String str();
int val();
}
Особенности аннотаций
n Члены-методы имеют, скорее, смысл полей
n Тела этих методов будут создаваться автоматически
n Аннотациями можно снабжать классы, методы, поля, параметры, константы перечислимых типов и аннотации
n Пример снабжения аннотацией:
@MyAnnotation(str = "Example", val= 100)
public static void myMeth() {...}
Особенности аннотаций
n В любом случае аннотация предшествует объявлению
n Все аннотации наследуют от интерфейса java . lang . annotation . Annotation
n Во время выполнения программы информация об аннотациях извлекается средствами рефлексии
n После получения ссылки на объект аннотации у него можно вызывать методы, возвращающие заданные при аннотировании значения
Особенности аннотаций
n Для методов допускаются значения по умолчанию
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation {
String str() default "Over";
int val() default 9000;
}
// @MyAnnotation()
// @MyAnnotation(str = "some string");
// @MyAnnotation(val = 100);
// @MyAnnotation(str = "Testing", val = 100);
Особенности аннотаций
n Бывают одночленные аннотации
Содержат один член и имеют сокращенную форму записи
@ interface MySingle {
int value (); //Имя только такое!
}
// @MySingle(100)
n Бывают аннотации-маркеры
Предназначены только для пометки элементов
@ interface MyMarker {}
// @ MyMarker ()
Правила сохранения аннотаций
n Правила сохранения аннотаций определяют, в какой момент аннотации будут уничтожены
n Правила задаются с помощью перечислимого типа java . lang . annotation . RetentionPolicy
n Существует три правила:
l SOURCE
аннотации отбрасываются на этапе компиляции
l CLASS
сохраняются в байт-коде, но недоступны JVM во время выполнения программы
l RUNTIME
доступны JVM во время выполнения программы
n В зависимости от цели аннотации ей задается то или иное правило сохранения
Правила сохранения аннотаций
n Задание правила сохранения производится с помощью аннотации java . lang . annotation . Retention
n По умолчанию задается правило CLASS
n Пример задания правила сохранения:
@Retention(RetentionPolicy.RUNTIME)
@interface myAnnotation {
String str ();
int val ();
}
Стандартные аннотации (работа с аннотациями)
n @ Retention
Применяется к аннотациям, позволяет задать правило сохранения
n @ Documented
Применяется к аннотациям, указывает, что она должна быть документирована
n @ Target
Применяется к аннотациям, позволяет указать типы объектов, к которым данная аннотация может применяться
n @ Inherited
Применяется к аннотациям классов, указывает, что данная аннотация будет унаследована потомками класса
Стандартные аннотации (инструкции компилятора)
n @ Override
Применяется к методам, указывает, что метод должен переопределять метод родительского класса или реализовывать метод родительского интерфейса
n @ Deprecated
Указывает на то, что объявление является устаревшим или вышедшим из употребления
n @ SupressWarnings
Указывает на то, что указанные виды предупреждений компилятора не будут показываться
Особенности аннотаций
n Аннотация не может наследовать другую аннотацию
n Методы аннотаций не должны иметь параметров
n Возвращаемый тип методов:
l примитивный тип
l String
l Class
l перечислимый тип
l другой тип аннотации
l массив элементов одного из вышеперечисленных типов
n Аннотации не могут быть настраиваемыми
n Методы не могут объявлять исключения
Вопрос 83 Особенности одно- и многопоточного программирования. Реализация многопоточности. Многопоточность в JAVA. 2-5. Лекция многопоточное программирование.
Дата: 2019-07-30, просмотров: 232.