Аннотация-маркер


Аннотация-маркер — это специальный вид аннотаций, который не содержит членов. Его единственное назначение — пометить (маркировать) объявление. То есть его присутствие как аннотации существенно. Лучший способ определить, присутствует ли аннотация-маркер — воспользоваться методом isAnnotationPresent (), который определен в интерфейсе AnnotatedElement.

Рассмотрим пример использования аннотации-маркера. Поскольку такая аннотация не имеет членов, важно просто определить — присутствует она или нет.

import java.lang.annotation.*;
import java.lang.reflect.*;
// Аннотация-маркер.м @Retention(RetentionPolicy.RUNTIME)
Sinterface MyMarker {
}
class Marker {
// Аннотирование метода с помощью маркера.
// Обратите внимание на необходимость скобок ().
OMyMarker
public static void myMeth() {
Marker ob = new Marker();
try {
Method m = ob.getClass().getMethod("myMeth");
// Определение наличия аннотации.
if (m.isAnnotationPresent(MyMarker.class))
System.out.println("MyMarker присутствует.");
}
catch (NoSuchMethodException exc) {v System.out.println("Метод не найден.");
}
}
public static void main(String args[]) {
myMeth();
}
}

Показанный ниже вывод подтверждает наличие @MyMarker: MyMarker присутствует.

Обратите внимание, что нет необходимости после SMyMarker указывать скобки. То есть SMyMarker применяется просто использованием ее имени:

@MyMarker

Не будет ошибкой указать пустые скобки, однако в этом нет необходимости.