2010-04-01 5 views

Répondre

2

Les annotations ne sont essentiellement pas plus qu'une étiquette (avec des données supplémentaires facultatives) sur une classe/méthode/champ. D'autres codes (bibliothèques ou outils) peuvent découvrir ces balises et exécuter des fonctionnalités en fonction des annotations trouvées. Je ne vois pas de réelle limite à la complexité des fonctionnalités éventuellement ajoutées par les annotations. Cela peut par exemple émuler AOP (ajouter une fonctionnalité avant ou après une méthode avec une annotation).

2

Les annotations en tant que telles ajoutent uniquement des informations (métadonnées) à une classe.

Cependant, il est facile de créer un système qui utilise ces métadonnées pour fournir des fonctionnalités supplémentaires.

Par exemple, vous pouvez utiliser apt pour générer des classes en fonction des informations fournies par l'annotation.

1

Je comprendrais les annotations comme un moyen de documenter votre code d'une manière lisible par une machine. Par exemple, dans Hibernate, vous pouvez spécifier toutes les informations de persistance pour vos objets en tant qu'annotations. Ceci est directement lisible pour vous et pas dans un fichier XML distant. Mais il est également lisible pour que l'outil génère des configurations, des schémas de base de données, etc.

2

Une annotation nécessite un outil pour réagir. Si un tel outil n'existe pas, l'annotation est simplement une notation. L'outil peut être un agent basé sur APT ou un morceau de code utilisant la réflexion (par exemple, @Test de JUnit).

Plusieurs annotations sont reconnues par le compilateur Java et ont donc une sémantique prédéfinie: @Override, @Deprecated, @Target.

Questions connexes