Элементы пометки в Java
Элементы своей пометки похожи на методы без тела: у каждого есть тип и имя. При использовании метки компилятор сохраняет переданные значения вместе с объявлением.
Строка и целое число часто описывают имя этапа и его порядковый номер. Объявление с двумя элементами выглядит так:
@interface Stage {
String name();
int order();
}
Если элемент один и его имя совпадает с параметром
value, в скобках можно указать только
значение без имени. Для нескольких полей имена
задают явно:
@interface Stage {
String name();
int order();
}
class Release {
@Stage(name = "alpha", order = 1)
static void publishDraft() {
System.out.println("publish");
}
}
Допустимы перечисления, классы и массивы примитивов или строк. Массив из одного элемента можно записать без фигурных скобок:
@interface Tags {
String[] labels();
}
@Tags(labels = "api")
class Endpoint {
}
@Tags(labels = {"api", "internal"})
class InternalEndpoint {
}
Элемент типа Class хранит ссылку на тип.
Его удобно использовать, когда метка указывает
на класс обработчика:
@interface Handler {
Class<?> type();
}
class AuditHandler {
}
@Handler(type = AuditHandler.class)
class JobRunner {
}
Объявите метку с элементами code типа
String и priority типа int.
Повесьте её на метод отправки уведомления с
разными значениями.
Добавьте метку со строковым массивом roles
и повесьте её на класс доступа с двумя строками
в массиве.