Wie erstelle ich optionale Parameter für eigene Annotationen?

Lesezeit: 1 Minute

Benutzer-Avatar
Biju-CD

Es folgt der Anmerkungscode

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

Ich würde gerne machen datatype ein optionaler Parameter, zum Beispiel

@ColumnName(value="password") 

sollte ein gültiger Code sein.

Benutzer-Avatar
Ridudel

Scheint wie das erste Beispiel in der amtliche Dokumentation das sagt alles …

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

  • Ich habe nur auf die Tutorials geschaut. ie, warum ich das nicht finden konnte. Darf ich den Unterschied zwischen nicht zugewiesen und nicht implementiert kennen

    – Biju-CD

    19. August 2010 um 10:23 Uhr

  • Es gibt keinen Unterschied. Sie sind nur String-Werte. Sie könnten “Peter” und “Paul” sein.

    – Funkenspinne

    21. Januar 2012 um 6:49 Uhr


  • Und was ist, wenn meine Parameter sind Class<?>s?

    – Ätherus

    3. Mai 2016 um 3:57 Uhr

  • In diesem Fall gilt immer noch das Typsystem von Java. Zum Beispiel Class<?> proxy() default Object.class

    – Michael Müller

    27. Februar 2019 um 21:49 Uhr

  • Vielen Dank! Die offizielle Dokumentation mag das Beispiel enthalten, aber dieser SO-Beitrag war der Top-Treffer bei meiner Goggle-Suche, daher sind Ihre Antwort und der Link hilfreich!

    – vollständig

    3. November 2021 um 20:56 Uhr

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

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

Dann muss es bei Verwendung der Annotation nicht angegeben werden.

1283520cookie-checkWie erstelle ich optionale Parameter für eigene Annotationen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy