2011-08-15 10 views
29

Java permite la definición de los valores de anotaciones, por ejemplo:¿Es posible hacer obligatorio el valor de una anotación Java?

public @interface MyAnnotation { 
    int MyValue(); 
} 

Aunque es posible establecer un valor predeterminado para el MyValue anotación, me preguntaba si es posible que sea obligatorio. Lo que quiero decir es forzar al usuario a proporcionar un valor para MyValue al anotar una clase o campo.

Revisé la documentación pero no pude encontrar nada. ¿Alguien tiene una solución para este problema o es simplemente imposible hacer que el valor de una anotación sea obligatorio?

Respuesta

53

Si no especifica un valor predeterminado, es obligatorio. Para su ejemplo con su anotación sin necesidad de utilizar el atributo MyValue genera este error del compilador:

annotation MyAnnotation is missing MyValue

+1

¡Cómo lo extrañé, gracias! – JVerstry

4

Dada

public @interface MyAnnotation { 
    int MyValue(); 
} 

una clase

@MyAnnotation 
public class MyClass { 

} 

habrá un error de compilación con un valor.

1

No he intentado esto pero si quiere forzar los valores a un valor específico quizás haciendo que el tipo sea una enumeración.

public @interface MyAnnotation { 
    Status status(); 
} 

Donde Status is an enum.

Cuestiones relacionadas