Récupérer Annotation Java Attribut
Comment puis-je récupérer la valeur d'une annotation sur la méthode annotée??
J'ai:
@myAnnotation(attribute1 = value1, attibute2 = value2)
public void myMethod()
{
//I want to get value1 here
}
- Pouvez-vous fournir plus de détails sur ce que vous voulez accomplir?
- C'est juste comme je l'ai dit, je veux utiliser la valeur de attribut1 sans avoir à répéter sur le code
- Ce n'est pas vraiment une programmation efficace de la méthode. Il n'y a aucun avantage à avoir les valeurs définies dans une annotation, plutôt que d'être mis dans final des variables à l'intérieur du code, ou dans le final de la statique des variables en dehors de la méthode.
Vous devez vous connecter pour publier un commentaire.
Méthode
instance.Quelque chose comme:
Vous aurez besoin pour attraper /gérer les exceptions appropriées, bien sûr. Le ci-dessus suppose que vous êtes, en effet, la récupération de la méthode de la classe courante (remplacer
getClass()
avecClass.forName()
sinon) et de la méthode en question est publique (utilisationgetDeclaredMethods()
si ce n'est pas le cas)Deux choses importantes:
RUNTIME
, de sorte que vous pouvez accéder à l'annotation au moment de l'exécution. La valeur par défaut est au moment de la compilation, ce qui signifie que les annotations sont disponibles dans le fichier de classe, mais ne sont pas accessibles au moment de l'exécution à l'aide de la réflexion.Exemple complet:
Thread.currentThread().getStackTrace()[2].getMethodName()
ounew Throwable().fillInStackTrace().getStackTrace()[0].getMethodName()
devrait le faire.Pour obtenir la méthode actuelle, essayez d'utiliser ce code:
@mhaller: un peu trop long pour un commentaire sur ton post. Évidemment besoin de plus de raffinement à traiter avec des méthodes surchargées, mais il n'est pas impossible.:
[edit: crédit/grâce à Alexandr Priymak pour repérer l'erreur dans main()]