Как я могу сделать аннотацию Java как @name ("Luke") без атрибута в круглых скобках? Как я могу сделать пользовательскую аннотацию Java без имени атрибута в скобках? Я не хочу этого: @annotation_name(att=valor). Я просто хочу, как в сервлетах, т.е. @WebServlet("/main") Ответ 1 Определите аннотацию с атрибутом с именем value, тогда имя атрибута можно пропустить: @interface CustomAnnotation { String value(); } Это можно использовать так: @CustomAnnotation("/main") // ... Ответ 2 Вы указываете атрибут с именем value: public @interface MyAnnotation { String value(); } Это не должно быть единственным атрибутом, если они имеют значения по умолчанию: public @interface MyAnnotation { String value(); int myInteger() default 0; } Но если вы хотите явно присвоить значение атрибуту, отличному от значения, вы должны явно присвоить значение. То есть: @MyAnnotation("foo") @MyAnnotation(value = "foo", myInteger = 1) работы но @MyAnnotatino("foo", myInteger = 1) не Ответ 3 Цитирование аннотаций официальной документации: Если есть только один элемент с именем value, то имя может быть опущено, как в: @SuppressWarnings("unchecked") void myMethod() { } Вот как эта аннотация определяется: public @interface SuppressWarnings { String[] value(); } Как вы можете видеть, документация не совсем WebServlet, другие атрибуты также разрешены ("только один элемент"), см. WebServlet - но одно именованное value обрабатывается по-разному.
Ответ 1 Определите аннотацию с атрибутом с именем value, тогда имя атрибута можно пропустить: @interface CustomAnnotation { String value(); } Это можно использовать так: @CustomAnnotation("/main") // ...
Ответ 2 Вы указываете атрибут с именем value: public @interface MyAnnotation { String value(); } Это не должно быть единственным атрибутом, если они имеют значения по умолчанию: public @interface MyAnnotation { String value(); int myInteger() default 0; } Но если вы хотите явно присвоить значение атрибуту, отличному от значения, вы должны явно присвоить значение. То есть: @MyAnnotation("foo") @MyAnnotation(value = "foo", myInteger = 1) работы но @MyAnnotatino("foo", myInteger = 1) не
Ответ 3 Цитирование аннотаций официальной документации: Если есть только один элемент с именем value, то имя может быть опущено, как в: @SuppressWarnings("unchecked") void myMethod() { } Вот как эта аннотация определяется: public @interface SuppressWarnings { String[] value(); } Как вы можете видеть, документация не совсем WebServlet, другие атрибуты также разрешены ("только один элемент"), см. WebServlet - но одно именованное value обрабатывается по-разному.