Объявление @interface
Ключевое слово @interface используется для объявления
собственной аннотации. Аннотация - это специальный тип,
который может содержать элементы (похожие на методы),
но не содержит логики. Внутри @interface объявляются
элементы аннотации, у каждого элемента можно задать
значение по умолчанию. Первым параметром при использовании
аннотации указывается значение для элемента value,
остальные элементы передаются по имени. Аннотации применяются
к классам, методам, полям и другим элементам кода.
Синтаксис
public @interface AnnotationName
{
type elementName();
type elementName() default value;
}
Пример
Давайте объявим простую аннотацию с одним элементом и применим ее к классу:
@interface MyAnnotation
{
String value();
}
@MyAnnotation("abcde")
public class Main
{
public static void main(String[] args)
{
Class<?> cls = Main.class;
MyAnnotation ann = cls.getAnnotation(MyAnnotation.class);
System.out.println(ann.value());
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте объявим аннотацию с несколькими элементами и значением по умолчанию:
@interface Info
{
String author();
int version() default 1;
}
@Info(author = "John", version = 2)
public class Main
{
public static void main(String[] args)
{
Class<?> cls = Main.class;
Info info = cls.getAnnotation(Info.class);
System.out.println(info.author());
System.out.println(info.version());
}
}
Результат выполнения кода:
"John"
2
Пример
Давайте объявим аннотацию с массивом значений и применим ее к методу:
@interface Tags
{
String[] value();
}
public class Main
{
@Tags({"a", "b", "c"})
public static void doSomething()
{
System.out.println("done");
}
public static void main(String[] args) throws Exception
{
Tags tags = Main.class
.getMethod("doSomething")
.getAnnotation(Tags.class);
for (String tag : tags.value())
{
System.out.println(tag);
}
}
}
Результат выполнения кода:
"a"
"b"
"c"
Смотрите также
-
раздел
Аннотации,
который описывает работу с аннотациями -
раздел
Элементы аннотации,
который описывает объявление элементов -
раздел
Значение по умолчанию,
который описывает default-значения элементов -
аннотация
Retention,
которая задает область хранения аннотации