Можно ли указать аннотацию с нулевым значением по умолчанию?
Я хочу добиться чего-то вроде дополнительных атрибутов аннотаций.
Например,
public @interface Foo {
Config value();
}
public @interface Config {
boolean ignoreUnknown() default false;
int steps() default 2;
}
Я хотел бы использовать @Foo (без указания значения, поэтому оно должно быть необязательным), и я также хотел бы иметь возможность написать что-то вроде этого:
@Foo (
@Config(
ignoreUnknown = true,
steps = 10
)
)
Можно ли сделать что-то подобное с аннотациями?
Я не хочу делать что-то подобное
public @interface Foo {
boolean ignoreUnknown() default false;
int steps() default 2;
}
потому что я хочу иметь возможность различать, было ли свойство установлено или нет (а не имеет ли оно значение по умолчанию или нет).
Это немного сложно описать, но я работаю над небольшим процессором аннотаций, который генерирует код Java. Однако во время выполнения я хотел бы установить конфигурацию по умолчанию, которая должна использоваться для всех @Foo, за исключением тех, кто установил собственную конфигурацию с @Config.
так что я хочу что-то вроде этого:
public @interface Foo {
Config value() default null;
}
Но насколько я знаю, это невозможно, верно? Кто-нибудь знает обходной путь для такого необязательного атрибута?