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.

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]"; 
}

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.