Vous avez juste écrit une annotation.
Concernant l' default
relevé en particulier: elle est utilisée parce que les annotations et les interfaces ne peuvent pas avoir de constructeurs, c'est donc le seul moyen d'avoir une valeur par défaut pour une annotation de l'attribut. De la Java Language Specification:
Une annotation de type élément peut avoir une valeur par défaut est spécifié. Ceci est fait par la suite de son (vide) liste des paramètres avec le mot-clé default
et la valeur par défaut de l'élément.
Les valeurs par défaut sont appliquées de manière dynamique à la fois les annotations sont en lecture; les valeurs par défaut ne sont pas compilées dans les annotations. Ainsi, la modification d'une valeur par défaut affecte les annotations même dans les classes qui ont été compilées avant le changement a été fait (en supposant ces annotations manque une valeur explicite pour la valeur par défaut de l'élément).
Je remarque qu'aucun des annotations en java.lang.annotation utiliser les valeurs par défaut, si.
Utilisation: Vous avez une annotation @HelloWorld
avec un attribut sayHello
. Vous pourriez le mettre sur une classe comme ceci:
@HelloWorld(sayHello="Hi")
public class MyClass {
}
Puisque vous avez une valeur par défaut, vous pouvez simplement mettre
@HelloWorld
public class MyClass {
}
(Notez que dit le document, "Dans les annotations à un seul élément, l'élément doit être nommé value
"; je crois que la seule raison pour cela est que vous pouvez simplement écrire @HelloWorld("Hi")
sans avoir à nommer le paramètre.)
Comme l'écrit, votre annotation peut être utilisée sur aucun élément de programme (y compris les méthodes et les déclarations de variables). Vous pouvez changer cela avec l' @Target
d'annotation.
Enfin, la définition de la RetentionPolicy
vous permet de décider si l'annotation doit être rejeté par le compilateur, rejeté par la VM, ou de rester toujours.
Deux forfaits qui pourrait être intéressant aussi: javax.annotation et javax.annotation.la transformation. Et ici est un exemple de l'utilisation de l'annotation de traitement pour l'analyse du code source.