Maison >Java >javaDidacticiel >Pouvez-vous transmettre des valeurs dynamiques aux annotations Java ?

Pouvez-vous transmettre des valeurs dynamiques aux annotations Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 08:28:021051parcourir

 Can You Pass Dynamic Values to Java Annotations?

Fournir des valeurs dynamiques aux annotations Java

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 :

  • RetentionPolicy.SOURCE : rejeté après la compilation
  • RetentionPolicy.CLASS : inclus dans les fichiers de classe
  • RetentionPolicy.RUNTIME : conservé tout au long de l'exécution

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn