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.

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.