Historique de la question :
Les annotations sont apparues dans Java 5 pour ajouter des métadonnées dans le bytecode sans modifier la logique du programme lui-même. Grâce aux annotations, il est facile de fournir des informations supplémentaires aux classes et méthodes pour les frameworks, les compilateurs ou les analyseurs.
Problème :
Des annotations mal conçues ou mal utilisées compliquent la maintenance du code. Parfois, les développeurs confondent la pertinence des annotations ou ne savent pas comment créer les leurs, et ignorent la possibilité de créer des annotations avec des paramètres.
Solution :
Création d'une annotation personnalisée :
import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyTest { String value() default ""; }
Utilisation de l'annotation :
public class TestClass { @MyTest("Exemple") public void testMethod() {...} }
Caractéristiques clés :
Une annotation peut-elle hériter d'une autre annotation ?
Réponse : Non, les annotations en Java ne prennent pas en charge l'héritage entre elles.
Peut-on rendre le travail d'une annotation obligatoire dans toutes les classes dérivées ?
Réponse : Pas directement. Il faut vérifier la présence de l'annotation par réflexion, en mettant en œuvre un contrôle similaire manuellement.
Quelle est la différence entre @Retention(CLASS) et @Retention(RUNTIME) ?
Réponse :
Dans le projet, il a été décidé de remplacer la configuration XML par des annotations, mais sans ajouter @Retention(RUNTIME)
Avantages :
Inconvénients :
Nous avons configuré une annotation personnalisée @Audit sur les méthodes, contrôlant l'audit des opérations commerciales, avec réflexion sur l'appel réel de la logique sur le serveur.
Avantages :
Inconvénients :