Tentative et problème initial
En Java, vous utilisez des annotations pour fournir des métadonnées à classes, méthodes et variables. Dans certains scénarios, vous souhaiterez peut-être attribuer des valeurs dynamiques aux attributs d'annotation. Cependant, l'attribution d'une expression non constante, telle que le résultat d'un appel de méthode, à un attribut d'annotation est généralement interdite. Comme vous l'avez constaté :
@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)
Le compilateur se plaint :
"La valeur de l'attribut d'annotation MyInterface.aString doit être une expression constante"
Limitations du compilateur
Cette limitation provient de l'évaluation par le compilateur des métadonnées d'annotation pour les annotations RetentionPolicy.RUNTIME au moment de la compilation. La valeur attribuée à l'attribut d'annotation doit être connue au moment de la compilation.
Différentes politiques de rétention
Java fournit différentes politiques de rétention pour les annotations :
Résolution
Malheureusement, atteindre votre objectif consistant à fournir des valeurs de chaîne générées dynamiquement aux annotations n'est pas possible en raison des limitations du compilateur. Ni RetentionPolicy.SOURCE ni RetentionPolicy.RUNTIME ne le permettent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!