Fournir dynamiquement des valeurs d'annotation
L'extrait de code fourni vise à générer dynamiquement des valeurs pour les attributs d'annotation. Cependant, l'erreur rencontrée indique que les valeurs d'annotation doivent être des expressions constantes, mettant en évidence une limitation dans la gestion des annotations par Java.
Dans l'exemple, une annotation @MyInterface est définie avec un attribut aString. La valeur de cet attribut est destinée à être générée dynamiquement à l'aide de la méthode generateName. Cependant, Java exige que les valeurs des attributs d'annotation soient des expressions constantes, ce qui signifie qu'elles doivent être connues au moment de la compilation. Étant donné que GENERIC_GENERATED_NAME est généré au moment de l'exécution, il viole cette exigence.
Il n'existe aucun moyen simple de contourner cette limitation en Java. Le compilateur évalue les métadonnées d'annotation pour les annotations RetentionPolicy.RUNTIME au moment de la compilation, et la valeur générée n'est pas disponible jusqu'à l'exécution. De même, les annotations avec RetentionPolicy.SOURCE sont supprimées après la compilation, ce qui rend les valeurs générées inaccessibles.
Par conséquent, il n'est pas possible de générer dynamiquement des valeurs pour les attributs d'annotation en Java. Toutes les valeurs d'attribut d'annotation doivent être connues et résolubles au moment de la compilation.
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!