Les Annotations en JAVA

Présentation

Les annotations ont été inclues en JAVA depuis la Java Standard Edition 5.0 en 2005.
En 2005, elles sont déjà utilisées par les approches XDoclet/EJBGen et d'autres encore. Actuellement, elles sont utilisées dans leur forme officielle par les EJB3/Hibernate3.1 pour citer les plus connus.

Les annotations s'appliquent à :

Elles sont optionnelles et peuvent contenir des couples clé/valeur.

Syntaxe

Déclaration

En Java tout est objet, une annotation est donc objet aussi. Elle se déclare de façon propre dans un fichier portant l'extension .java et portant le nom de l'annotation.
Exemple : Contrainte.java

public @interface Contrainte {
	int minLength;
	int maxLength;
}

Utilisation

Cet exemple illustre l'utilisation de l'annotation précedement déclarée sur une méthode.

@Contrainte(minLength=3, maxlength=5)
public void setName(){
//...
}

Les Méta-Annotations

Ce sont des annotation qui s'appliquent aux annotations. Elles sont disponible dans java.lang.Annotation Les méta-annotations standards sont :

@Documented

Elle indique que l'annotation annoté par @documented doit être documentée par des tags javadoc. Javadoc prendra en compte les commentaires associés à cette annotation.

@Inhereted

L'annotation annotée est automatiquement héritée. Le fils d'un élément annoté aura donc aussi l'annotation.

@Retention

@rentention définit la politique d'usage de l'annotation annotée. Elle définit la détention de l'annotation au niveau de la JVM.
Les différentes politiques sont :

@Target

@Target définie le domaine d'application de l'annotation annotée.
Les types d'éléments pouvant être annotées sont :

@SuppressWarning

Elle ne s'applique pas forcément à une annotation(l'exception qui fait la règle !).
Elle indique au compilateur de ne pas lever de warning pour des raisons de conversions non vérifiées. En particulier, cette annotation est utile pour les « Unchecked Warning » en cas de casts ou conversions impliquant des generics non vérifiable par le VM. Il existe 2 types d'" Unchecked Warning " :

Les annotations standards

Elles sont disponible dans java.lang et sont les suivantes :

Restrictions

Les annotations ne permettent pas l'héritage d'annotations.
Les méthodes d'annotation sont sans paramètres, que des couples clé/valeurs!
Il n'est pas possible de faire de gestion des exceptions avec les annotations.