2012-08-02 8 views

Respuesta

18

Definir la anotación con un atributo llamado value, el atributo nombre puede omitirse:

@interface CustomAnnotation 
{ 
    String value(); 
} 

Esto puede ser usado de esta manera:

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

No te compilar :(y en Eclipse lanzar un error diciendo atributo –

+0

falta pero no lo hace Trabajar todavía :(@Target (ElementType.METHOD) @Retention (RetentionPolicy.RUNTIME) public @interface Obtener { \t String name(); \t } => @Get ("hola") public void inserir() LANZA UNA EXCEPCIÓN –

+0

¡Gracias! ¡Funciona! :) –

7

Citando Annotations official documentation:

Si sólo 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 que la documentación no es del todo correcta, también se permiten otros atributos ("solo un elemento"), consulte WebServlet - pero se trata el que se llama value diferentemente.

12

Se especifica un atributo valor denominado:

public @interface MyAnnotation { 

    String value(); 

} 

Esto no tiene por qué ser el único atributo si tienen valores por defecto:

public @interface MyAnnotation { 

    String value(); 
    int myInteger() default 0; 

} 

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

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

obras

pero

@MyAnnotatino("foo", myInteger = 1) 

no

Cuestiones relacionadas