Значение по умолчанию
Значение по умолчанию в аннотациях Java задает
значение элемента аннотации, которое используется,
если при применении аннотации значение этого
элемента не указано явно. Значение по умолчанию
задается с помощью ключевого слова default
после имени элемента аннотации. В качестве
значения по умолчанию можно использовать
константы, строки, числа, перечисления, классы
и массивы. Значение по умолчанию должно быть
совместимо с типом элемента аннотации.
Синтаксис
public @interface AnnotationName
{
type elementName() default value;
}
Пример
Давайте создадим аннотацию с элементом, имеющим значение по умолчанию, и применим ее без указания этого элемента:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation
{
String name() default "defaultName";
int count() default 1;
}
@MyAnnotation
public class Main
{
public static void main(String[] args) throws Exception
{
MyAnnotation ann = Main.class.getAnnotation(MyAnnotation.class);
System.out.println(ann.name());
System.out.println(ann.count());
}
}
Результат выполнения кода:
"defaultName"
1
Пример
Давайте применим ту же аннотацию, но явно
укажем значение элемента name:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation
{
String name() default "defaultName";
int count() default 1;
}
@MyAnnotation(name = "customName")
public class Main
{
public static void main(String[] args) throws Exception
{
MyAnnotation ann = Main.class.getAnnotation(MyAnnotation.class);
System.out.println(ann.name());
System.out.println(ann.count());
}
}
Результат выполнения кода:
"customName"
1
Пример
Давайте создадим аннотацию с элементом-массивом, имеющим значение по умолчанию:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation
{
String[] values() default {"a", "b", "c"};
}
@MyAnnotation
public class Main
{
public static void main(String[] args) throws Exception
{
MyAnnotation ann = Main.class.getAnnotation(MyAnnotation.class);
for (String value : ann.values())
{
System.out.println(value);
}
}
}
Результат выполнения кода:
"a"
"b"
"c"
Смотрите также
-
аннотация
Annotation,
которая является основой для создания аннотаций -
элемент
element,
который определяет параметр аннотации -
аннотация
Retention,
которая задает политику хранения аннотации -
аннотация
Target,
которая указывает, где можно применять аннотацию