Можно ли сделать значение аннотации Java обязательным? - PullRequest
37 голосов
/ 16 августа 2011

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

public @interface MyAnnotation {
    int MyValue();
}

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

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

Ответы [ 3 ]

64 голосов
/ 16 августа 2011

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

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

4 голосов
/ 16 августа 2011

Учитывая

public @interface MyAnnotation {
    int MyValue();
}

класс

@MyAnnotation
public class MyClass {

}

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

1 голос
/ 15 марта 2012

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

public @interface MyAnnotation {
    Status status();
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...