Jak stworzyć opcjonalne parametry dla własnych adnotacji?

89

Poniżej znajduje się kod adnotacji

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

Chciałbym na przykład podać datatypeopcjonalny parametr

@ColumnName(value="password") 

powinien być prawidłowym kodem.

Biju CD
źródło

Odpowiedzi:

125

Wygląda na to, że pierwszy przykład w oficjalnej dokumentacji mówi wszystko ...

/**
 * 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
źródło
1
Spojrzałem tylko na tutorial. czyli dlaczego nie mogłem tego znaleźć. może znam różnicę między nieprzypisanymi a niezaimplementowanymi
Biju CD
16
Nie ma różnicy. To tylko wartości typu String. Mogą to być „Piotr” i „Paweł”.
sparkyspider
5
A co jeśli moje parametry to Class<?>s?
Aetherus
W takim przypadku nadal obowiązuje system typów Javy. Na przykładClass<?> proxy() default Object.class
Michael Miller
35

Aby uczynić go opcjonalnym, możesz przypisać mu domyślną wartość w następujący sposób:

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

Wtedy nie trzeba go określać podczas korzystania z adnotacji.

Johannes Wachter
źródło