Значение по умолчанию в пометке
Не каждый элемент нужно указывать в скобках при
каждом использовании метки. В объявлении
@interface для элемента можно задать
значение по умолчанию через ключевое слово
default.
Если у метки один строковый элемент с запасным значением, объявление выглядит так:
@interface Layer {
String name() default "core";
}
При использовании скобки можно опустить - компилятор
подставит "core". Явное значение перекрывает
запасное:
@interface Layer {
String name() default "core";
}
@Layer
class CoreService {
}
@Layer(name = "edge")
class EdgeService {
}
Несколько элементов могут иметь default
независимо. В скобках указывают только те поля,
которые должны отличаться от запасных:
@interface Audit {
String channel() default "app";
boolean enabled() default true;
}
@Audit
class LoginFlow {
}
@Audit(channel = "admin", enabled = false)
class AdminFlow {
}
Для массива значение по умолчанию задают фигурными скобками. Пустой массив - обычный запасной вариант, когда метку вешают без списка:
@interface Scope {
String[] zones() default {};
}
@Scope
class GlobalConfig {
}
@Scope(zones = {"eu", "us"})
class RegionConfig {
}
Объявите метку с элементом tier и значением
по умолчанию "free". Повесьте её на класс
без скобок и на второй класс с явным уровнем
"pro".
Добавьте элемент retries типа int
с default = 3. На метод доставки повесьте
метку, не указывая число повторов.