Использование значений по умолчанию

Вы можете дать членам аннотации значения по умолчанию, которые будут использоваться, когда применяется аннотация. Значение по умолчанию указывается добавлением слова default к объявлению члена. Это выглядит следующим образом:

type member () default value;

Здесь value должно иметь тип, совместимый с type.

Вот как выглядит @MyAnno, переписанная с использованием значений по умолчанию:

// Объявление типа аннотации, включающее значения по умолчанию.
SRetention(RetentionPolicy.RUNTIME)
@interface MyAnno {
String str() default "Тестирование";
int val() default 9000;
}

Это объявление определяет значение по умолчанию "Тестирование" для члена str и 9000 — для val. Это означает, что ни одно их значений не обязательно указывать при использовании SMyAnno. Однако любому из них или обоим сразу можно присвоить значение при необходимости. Таким образом, существуют четыре способа применения @МуАппо:

@MyAnno() // значения str и val принимаются по умолчанию
@MyAnno(str = "некоторая строка") // val — по умолчанию
@MyAnno(val = 100) // str - по умолчанию
@MyAnno(str = "Тестирование", val = 100) // нет умолчаний

В следующей программе демонстрируется использование значений по умолчанию в аннотациях.

import java.lang.annotation.*;
import java.lang.reflect.*;
// Объявление типа аннотаций с включением значений по умолчанию.
@Retention(RetentionPolicy.RUNTIME)
ginterface MyAnno {
String str() default "Тестирование";
int valО default 9000;
}
class Meta3 {
// Аннотирование метода с использованием значений по умолчанию.
@MyAnno()
public static void myMethО {
Meta3 ob = new Meta3 () ;
// Получить аннотацию к методу
//и отобразить значения ее членов.
try {
Class с = ob.getClass();
Method m = с.getMethod("myMeth");
MyAnno anno = m.getAnnotation(MyAnno.class);
System.out.println(anno.str() + " " + anno.valO);
}
catch (NoSuchMethodException exc) {
System.out.println ("Метод не найден.");
}
public static void main(String args[]) {
myMeth();
}
}

Вывод будет таким:

Тестирование 9000