Annotation (Java)
En programmation, une annotation Java est une façon d'ajouter des mĂ©ta-donnĂ©es Ă un code source Java. Elles peuvent ĂȘtre ajoutĂ©es aux classes, mĂ©thodes, attributs, paramĂštres, variables locales et paquets.
Historique des annotations Java
Les annotations Java ont été introduites en 2002 à travers le JCP (JSR-175) et ont été approuvées en . Les annotations sont disponibles avec le JDK version 1.5.
Elles ont été introduites en tant qu'alternative aux fichiers de configuration XML. Elles trouvent leurs sources dans les libellés ajoutés directement dans la documentation Java (Javadoc) qui sont ensuite traitées par des outils tels que XDoclet pour générer les fichiers de configuration XML. Ceci évite d'écrire ces fichiers à la main car c'est un procédé ennuyeux et sujet à erreur.
Contrairement aux libellĂ©s XDoclet, les annotations Java peuvent (si besoin) ĂȘtre accessibles au programmeur lors de l'exĂ©cution du programme grĂące Ă la rĂ©flexion.
Comment les annotations Java sont traitées
Lors de la compilation des codes sources, le compilateur Java stocke les méta-données d'annotation dans les fichiers classes. Plus tard, la JVM ou d'autres programmes peuvent accéder à ces méta-données pour déterminer comment interagir avec les composants du programme ou changer leur comportement.
Les annotations (que vous pouvez crĂ©er) peuvent ĂȘtre elles-mĂȘmes annotĂ©es avec une annotation Retention
qui indique si cette annotation doit ĂȘtre embarquĂ©e dans le fichier classe, accessible dans l'environnement d'exĂ©cution ou simplement rester au niveau du code source (TODO).
Syntaxe de l'annotation
La déclaration des annotations est une variante des libellés ajoutés aux commentaires par le passé. Les annotations prennent la forme d'une déclaration d'interface précédée du caractÚre @, et facultativement suivies de méta-annotations, comme montré ci-dessous :
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD})
Dans cet exemple, Retention et Target sont des exemples d'annotations.
Les annotations ne faisant rien de particulier elles-mĂȘmes, il faut ensuite Ă©crire du code Java spĂ©cifique pour tirer parti des annotations dĂ©finies par le programmeur. Ce code peut ĂȘtre exĂ©cutĂ© soit lors de la compilation (ex: project lombok), soit lors de l'exĂ©cution comme avec les annotations Hibernate pour la persistance.