Modifier le champ annotation valeur dynamiquement
Est possible de modifier le champ d'annotation des valeurs au moment de l'exécution?
Je peux accéder aux valeurs, mais ne peut pas trouver un moyen de les changer.
L'accès est possible avec:
Article.class.declaredFields.find {it.name="annotatedField"}.declaredAnnotations
Je pense que cela répond à votre question: stackoverflow.com/questions/14268981/...
Il modifie la classe d'annotation.. je ne peux pas trouver un moyen de l'appliquer à un domaine.
Il modifie la classe d'annotation.. je ne peux pas trouver un moyen de l'appliquer à un domaine.
OriginalL'auteur Uros K | 2014-06-23
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il serait préférable de garder une référence à un objet d'Annotation en plus de votre Domaine (ou l'Objet), et de mettre à jour l'Annotation de référence que vous changer ses valeurs. De cette façon, lors de la mise en œuvre des annotations dans les Class.java des changements, votre code est moins susceptibles de se briser.
La réponse liée à la question des commentaires est utile pour traiter les annotations contenant un seul élément, mais si vous avez plusieurs éléments que vous devez définir, ici, c'est un plus générale de la solution qui permet d'utiliser un proxy:
Programme de la sortie:
il n'y a pas de nouvelle annotation créée . il profite de java dynamique de proxy pour intercepter tous les appels de méthode à l'intérieur de l'annotation que vous voulez changer le paramètre .
OriginalL'auteur nebulabrot