|
Tutorial Annotation JDK 1.5: exemple
|  |
Technique > Annotation Java 2- La plus simple des annotations 
Une annotation permet d'ajouter des méta données sur des éléments de code, tel qu'une classe, une méthode ou un attribut. Les annotation sont compilées par le compilateur Java et les valeurs sont stockées dans le fichier .class. Une annotation est un objet Java qui peut être accédée par la machine virtuelle (l'application Java) ou un autre programme (nous verrons la commande apt du JDK 1.5.0 plus loin dans le tutorial).
1- La plus simple des annotations
Nous allons créer une annotation trés simple, permettant de marquer les classes Java dont les objets sont persistants. Cette annotation ne possède aucune valeur, un peu comme l'interface Serializable de Java.
Une annotation est déclarée par un nouveau type Java, une @interface. Attention, @interface n'a rien à voir avec une interface Java.
// On verra ce que veut dire cette ligne plus tard
@Retention(RetentionPolicy.RUNTIME)
public @interface Persistant {} |
| Fichier: Persistant.java |
Nous allons ensuite utiliser cette annotation pour marquer les objets de la classe Entreprise comme étant Persistant..
@Persistant
public class Entreprise {...} |
| Fichier: Entreprise.java |
Vous pouvez alors, dans votre application tester si un objet est persistant ou non:
...
public void estPersistant(Object o) {
return o.getClass().isAnnotationPresent(Persistant.class);
}... |
Les annotations sont portées par les objets Java tel que Class ou Method et sont compilées par le compilateur java qui produit un .class par annotation, comme pour une classe ou interface Java.
2- Une annotation avec une valeur
Une annotation peut avoir une valeur ou plusieurs valeurs (vous verrez ce cas page suivante).
Dans cet exemple, nous créons une annotation Copyright contenant une seule valeur. Dans ce cas particulier, la valeur doit se nomer value().
package com.btc.tutorial.copyright;
public @interface Copyright {
String value();
}
|
| Fichier: Copyright.java |
Vous pouvez ainsi ajouter une annotation sur une classe par exemple en précisant le copyright.
package com.btc.tutorial.copyright;
@Copyright("(c) BTC 2004") public class Entreprise {
} |
| Fichier: Entreprise.java |
3- A quoi servent les annotation Java?
Exemple: générer des documents ou du code source en phase de développement
Vous pouvez utiliser des annotation pour écrire dans le code le nom du développeur ayant créé une classe, et générer un fichier contenant le nombre de classes créées par un développeur particulier en parcourant les annotations dans le code.
Exemple: générer le descripteur de déploiement J2EE pour les EJB
Les composants EJB sont déployés dans un serveur J2EE avec un fichier de déploiement. C'est un fichier XML contenant des informations sur le composant: quel est son nom, quel est sont type (Session avec ou sans état, Entité, Message...), quelle est sont interface distance, ...
Sans les annotation, ce fichier doit être mis à jour à chaque modification de l'EJB.
Les annotation permettent de stocker cette information dans le code source, le descripteur de déploiement étant généré au moment du déploiement.
La nouvelle version de la spécification EJB (version 3.0) sera basée sur les annotations Java, et les fichiers de déploiement seront entièrement générés.
Exemple: traitement génériques
Vous pouvez écrire des traitements génériques se basant sur des annotation. Pour sauver ou lire un objet Java à partir d'une base de donnée, vous pouvez utiliser des annotation pour décrire le mapping objet-relationnel en donnant par exemple le nom de la table dans laquelle les objets de la classe doivent être stockés, le nom des colonnes dans lesquelles les attributs doivent être stockés.
Il sera ainsi possible d'écrire une et une seule méthode permettant de saver ou de charger n'importe quel objet dont la classe possède les annotations.
Vous devez savoir maintenant::
- qu'une annotation Java est déclarée par @interface
- que @interface n'a rien à voir avec une interface
- qu'une annotation est compilée
Nous allons voir maintenant un exemple d'annotation plus complet. 
|