Подтвердить что ты не робот

Возможно ли обязательное значение аннотации Java?

Java позволяет определять значения в аннотациях, например:

public @interface MyAnnotation {
    int MyValue();
}

Хотя можно установить значение по умолчанию для аннотации MyValue, мне было интересно, можно ли сделать это обязательным. То, что я имею в виду, это заставить пользователя предоставить значение для MyValue при аннотации класса или поля.

Я просмотрел документацию, но ничего не нашел. Кто-нибудь имеет решение этой проблемы или просто невозможно сделать обязательным аннотацию?

4b9b3361

Ответ 1

Если вы не указали значение по умолчанию, оно является обязательным. Для вашего примера с использованием аннотации без использования атрибута MyValue генерируется ошибка компилятора:

аннотация MyAnnotation отсутствует MyValue

Ответ 2

Учитывая

public @interface MyAnnotation {
    int MyValue();
}

класс

@MyAnnotation
public class MyClass {

}

будет ошибкой компиляции без значения.

Ответ 3

Я не пробовал это, но если вы хотите заставить значения к определенному значению, возможно, сделать тип перечислением.

public @interface MyAnnotation {
    Status status();
}

Где Состояние - это перечисление.