Maison > Java > javaDidacticiel > le corps du texte

Pouvez-vous transmettre des valeurs dynamiques aux annotations Java ?

Patricia Arquette
Libérer: 2024-10-30 08:28:02
original
992 Les gens l'ont consulté

 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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!