Вопрос 82 Аннотации. 19-28 Лекция механизмы рефлексии.
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Метаданные

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, просмотров: 192.