standard create annotation java attributes annotations default parentheses

create - java standard annotations



¿Cómo puedo hacer una anotación de java como @name("Luke") sin atributo dentro de paréntesis? (3)

Cotización de anotaciones de documentación oficial :

Si solo hay un elemento llamado " value ", entonces el nombre se puede omitir, como en:

@SuppressWarnings("unchecked") void myMethod() { }

Así es como se define esta anotación:

public @interface SuppressWarnings { String[] value(); }

Como puede ver, la documentación no es del todo correcta, también se permiten otros atributos (" solo un elemento "), vea WebServlet , pero el value un nombre se trata de manera diferente.

¿Cómo puedo hacer una anotación java personalizada sin nombre de atributo entre paréntesis?

No quiero esto: @annotation_name(att=valor) . Solo quiero como en Servlets, es decir:

@WebServlet("/main")


Defina la anotación con un atributo llamado value , luego se puede omitir el nombre del atributo:

@interface CustomAnnotation { String value(); }

Esto puede ser usado como tal:

@CustomAnnotation("/main") // ...


Usted especifica un atributo llamado valor:

public @interface MyAnnotation { String value(); }

Este no tiene que ser el único atributo si tienen valores predeterminados:

public @interface MyAnnotation { String value(); int myInteger() default 0; }

Pero si desea asignar explícitamente un valor al atributo que no sea el valor, entonces debe asignar explícitamente un valor. Es decir:

@MyAnnotation("foo") @MyAnnotation(value = "foo", myInteger = 1)

trabajos

pero

@MyAnnotatino("foo", myInteger = 1)

no