Comment créer des paramètres optionnels pour ses propres annotations?

89

Voici le code d'annotation

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

Je voudrais faire datatypeun paramètre optionnel, par exemple

@ColumnName(value="password") 

doit être un code valide.

CD Biju
la source

Réponses:

125

On dirait que le premier exemple de la documentation officielle dit tout ...

/**
 * 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
la source
1
je n'ai regardé que le tutoriels.ie pourquoi je ne pouvais pas trouver ceci.Puis-je connaître la différence entre non attribué et non implémenté
Biju CD
16
Il n'y a pas de différence. Ce ne sont que des valeurs String. Ils pourraient être "peter" et "paul".
sparkyspider
5
Et si mes paramètres sont des Class<?>s?
Aetherus
Dans ce cas, le système de types de Java s'applique toujours. Par exempleClass<?> proxy() default Object.class
Michael Miller
35

Pour le rendre facultatif, vous pouvez lui attribuer une valeur par défaut comme celle-ci:

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

Ensuite, il n'a pas besoin d'être spécifié lors de l'utilisation de l'annotation.

Johannes Wachter
la source