¿Cómo crear parámetros opcionales para sus propias anotaciones?

89

A continuación se muestra el código de anotación

public @interface ColumnName {
   String value();
   String datatype();
 }

Me gustaría hacer datatypeun parámetro opcional, por ejemplo

@ColumnName(value="password") 

debe ser un código válido.

CD de Biju
fuente

Respuestas:

125

Parece que el primer ejemplo en la documentación oficial lo dice todo ...

/**
 * Describes the Request-For-Enhancement(RFE) that led
 * to the presence of the annotated API element.
 */
public @interface RequestForEnhancement {
    int    id();
    String synopsis();
    String engineer() default "[unassigned]"; 
    String date()     default "[unimplemented]"; 
}
Riduidel
fuente
1
Solo miré los tutoriales. Es decir, por qué no pude encontrar esto. Puedo saber la diferencia entre no asignado y no implementado
CD de Biju
16
No hay diferencia. Son solo valores de cadena. Podrían ser "peter" y "paul".
Sparkyspider
5
¿Y si mis parámetros son Class<?>s?
Aetherus
En ese caso, todavía se aplica el sistema de tipos de Java. Por ejemploClass<?> proxy() default Object.class
Michael Miller
35

Para que sea opcional, puede asignarle un valor predeterminado como ese:

public @interface ColumnName {
   String value();
   String datatype() default "String";
 }

Entonces no es necesario especificarlo al utilizar la Anotación.

Johannes Wachter
fuente