Элемент аннотации
Элемент аннотации - это метод, объявленный внутри интерфейса аннотации. Он определяет параметр, который можно задать при использовании аннотации. Каждый элемент имеет имя и тип возвращаемого значения. Тип может быть примитивом, строкой, классом, перечислением, другой аннотацией или массивом этих типов. Если у элемента нет значения по умолчанию, его обязательно нужно указать при применении аннотации. В первом параметре мы передаем имя элемента, во втором - его значение.
Элементы аннотации не принимают аргументов. Они не могут объявлять throws. Возвращаемый тип ограничен допустимыми типами. Значение по умолчанию задается с помощью ключевого слова default.
Синтаксис
@interface AnnotationName
{
Type elementName();
Type elementName() default value;
}
Пример
Объявим аннотацию с двумя элементами: value и count. У элемента count есть значение по умолчанию:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation
{
String value();
int count() default 1;
}
public class Main
{
public static void main(String[] args)
{
System.out.println("Аннотация объявлена");
}
}
Результат выполнения кода:
"Аннотация объявлена"
Пример
Применим аннотацию к классу, указав оба элемента:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation
{
String value();
int count() default 1;
}
@MyAnnotation(value = "abcde", count = 5)
public class Main
{
public static void main(String[] args)
{
MyAnnotation ann = Main.class.getAnnotation(MyAnnotation.class);
System.out.println(ann.value());
System.out.println(ann.count());
}
}
Результат выполнения кода:
"abcde"
5
Пример
Если у элемента есть значение по умолчанию, его можно не указывать. Также если элемент называется value, его можно записать без имени:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation
{
String value();
int count() default 1;
}
@MyAnnotation("12345")
public class Main
{
public static void main(String[] args)
{
MyAnnotation ann = Main.class.getAnnotation(MyAnnotation.class);
System.out.println(ann.value());
System.out.println(ann.count());
}
}
Результат выполнения кода:
"12345"
1
Смотрите также
-
интерфейс
Аннотация,
который описывает создание аннотаций -
элемент
Значение по умолчанию,
который задает значение элемента -
аннотация
Retention,
которая управляет временем жизни аннотации -
аннотация
Target,
которая указывает, куда можно применять аннотацию