Wie erstelle ich optionale Parameter für eigene Anmerkungen?

89

Es folgt der Anmerkungscode

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

Ich möchte datatypezum Beispiel einen optionalen Parameter machen

@ColumnName(value="password") 

sollte ein gültiger Code sein.

Biju CD
quelle

Antworten:

125

Scheint, als ob das erste Beispiel in der offiziellen Dokumentation alles sagt ...

/**
 * 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
quelle
1
Ich habe mir nur die Tutorials angesehen. Warum konnte ich das nicht finden? Vielleicht kenne ich den Unterschied zwischen nicht zugewiesen und nicht implementiert
Biju CD
16
Es gibt keinen Unterschied. Sie sind nur String-Werte. Sie könnten "Peter" und "Paul" sein.
Sparkyspider
5
Und was ist, wenn meine Parameter Class<?>s sind?
Ätherus
In diesem Fall gilt weiterhin das Java-Typsystem. Zum BeispielClass<?> proxy() default Object.class
Michael Miller
35

Um es optional zu machen, können Sie ihm einen Standardwert wie den folgenden zuweisen:

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

Dann muss es bei Verwendung der Anmerkung nicht angegeben werden.

Johannes Wachter
quelle