Como criar parâmetros opcionais para anotações próprias?

89

A seguir está o código de anotação

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

Eu gostaria de fazer datatypeum parâmetro opcional, por exemplo

@ColumnName(value="password") 

deve ser um código válido.

Biju CD
fonte

Respostas:

125

Parece que o primeiro exemplo na documentação oficial diz tudo ...

/**
 * 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
fonte
1
Eu só olhei para os tutoriais.isto é, por que não consegui encontrar isso. posso saber a diferença entre não atribuído e não implementado
Biju CD
16
Não há diferença. Eles são apenas valores de String. Eles podem ser "peter" e "paul".
sparkyspider
5
E se meus parâmetros forem Class<?>s?
Aetherus
Nesse caso, o sistema de tipos do Java ainda se aplica. Por exemploClass<?> proxy() default Object.class
Michael Miller
35

Para torná-lo opcional, você pode atribuir a ele um valor padrão como este:

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

Então não precisa ser especificado ao usar a Anotação.

Johannes Wachter
fonte