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