Maison > Java > javaDidacticiel > Comment puis-je récupérer l'appelant d'une méthode Java à l'aide de Stack Trace ou de Reflection ?

Comment puis-je récupérer l'appelant d'une méthode Java à l'aide de Stack Trace ou de Reflection ?

Patricia Arquette
Libérer: 2024-12-31 11:50:15
original
462 Les gens l'ont consulté

How Can I Recover the Caller of a Java Method Using Stack Trace or Reflection?

Récupération de l'appelant d'une méthode via Stack Trace ou Reflection

La capacité d'identifier l'appelant d'une méthode peut être cruciale dans divers débogages ou tracer des scénarios. Heureusement, Java propose deux approches principales pour relever ce défi : le stacktrace et la réflexion.

Stack Trace

La méthode Thread.currentThread().getStackTrace() renvoie un tableau des objets StackTraceElement. Selon la documentation Java, le dernier élément de ce tableau représente le bas de la pile, qui est l'appel de méthode le moins récent.

Exemple :

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
Copier après la connexion

Chaque StackTraceElement propose plusieurs méthodes d'assistance pour obtenir des informations sur la pile frame :

  • getClassName()
  • getFileName()
  • getLineNumber()
  • getMethodName()

En fonction du cas d'utilisation spécifique, vous devrez peut-être expérimenter pour déterminer quel élément du tableau stackTraceElements correspond à l'élément souhaité. appelant. Généralement, il se trouvera à l'index [1] ou [2].

Réflexion

Alternativement, la réflexion peut être utilisée pour accéder aux informations de l'appelant. En appelant la méthode getDeclaredMethod sur la classe souhaitée, vous pouvez récupérer l'objet Method représentant la méthode qui vous intéresse. Ensuite, en utilisant la méthode getClass sur l’objet Method, vous pouvez obtenir un objet Class pour la classe déclarante. Enfin, en utilisant la méthode getName sur l'objet Class, vous pouvez déterminer le nom de la classe de la méthode appelante.

Exemple :

Class<?> declaringClass = method.getDeclaringClass();
String callerClassName = declaringClass.getName();
Copier après la connexion

Le choix entre stack trace et la réflexion dépend du niveau de granularité souhaité et d'autres facteurs. Cependant, les deux approches fournissent des mécanismes efficaces pour tracer l'appelant d'une méthode en Java.

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