Maison > Java > javaDidacticiel > Comment puis-je obtenir le nom de la méthode en cours d'exécution en Java ?

Comment puis-je obtenir le nom de la méthode en cours d'exécution en Java ?

Patricia Arquette
Libérer: 2024-12-20 08:42:10
original
687 Les gens l'ont consulté

How Can I Get the Name of the Currently Executing Method in Java?

Comment récupérer le nom de la méthode actuelle en Java

Récupérer le nom de la méthode en cours d'exécution peut être un débogage ou une journalisation utile aide. Bien que Java ne fournisse pas de méthode directe pour cela, il existe une astuce astucieuse qui peut être utilisée.

Classe interne anonyme et réflexion

L'astuce consiste à créer un classe interne anonyme et utilisant la réflexion pour accéder à sa méthode englobante. Le code suivant illustre cette technique :

String name = new Object() {}.getClass().getEnclosingMethod().getName();
Copier après la connexion

Ce code crée une classe interne anonyme et récupère sa méthode englobante à l'aide de getEnclosingMethod(). Le nom de la méthode englobante est ensuite obtenu à l'aide de getName().

Considérations sur les performances

Bien que cette technique fonctionne, elle a certaines implications en termes de performances. Chaque appel déclenche la création d'une classe interne anonyme et d'une instance d'objet inutilisée. Cela peut introduire une surcharge importante, en particulier dans les scénarios où cette astuce est fréquemment utilisée.

Informations de débogage améliorées

Malgré les considérations de performances, cette technique offre un avantage. La méthode getEnclosingMethod() renvoie un objet java.lang.reflect.Method, qui donne accès à des informations supplémentaires sur la méthode, telles que des annotations et des noms de paramètres. Cela permet de distinguer les méthodes portant le même nom et les scénarios de surcharge.

Considérations de sécurité

Il convient de noter que selon le JavaDoc de getEnclosingMethod(), cette technique devrait ne lancez pas d'exception SecurityException car les classes internes sont chargées à l'aide du même chargeur de classe. Par conséquent, il n'est pas nécessaire de vérifier les conditions d'accès même lorsqu'un responsable de la sécurité est présent.

Utilisation pour les constructeurs

Il est important de se rappeler que getEnclosingMethod() est destiné à récupérer des informations sur les méthodes, pas sur les constructeurs. Pour les constructeurs, getEnclosingConstructor() doit être utilisé. De plus, getEnclosingMethod() renvoie null pour les blocs de code en dehors des méthodes nommées.

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