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

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

Mary-Kate Olsen
Libérer: 2024-12-21 18:33:15
original
698 Les gens l'ont consulté

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

Trouver l'appelant d'une méthode à l'aide de Stacktrace ou de réflexion

En Java, la détermination de l'appelant d'une méthode peut être réalisée via stacktrace ou réflexion .

Utilisation de Stacktrace

Le La méthode Thread.currentThread().getStackTrace() renvoie un tableau d'objets StackTraceElement, représentant les éléments de trace de pile du thread actuel. Le dernier élément du tableau représente le bas de la pile, ou l'appel de méthode le moins récent.

Chaque objet StackTraceElement donne accès au nom de la classe (getClassName()), au nom du fichier (getFileName()), à la ligne numéro (getLineNumber()) et nom de méthode (getMethodName()) de l’invocation de méthode correspondante. Pour déterminer l'appelant, vous pouvez généralement utiliser l'élément à l'index 1 ou 2 du tableau StackTraceElement.

Utilisation de Reflection

Reflection propose une autre approche pour identifier l'appelant. La méthode Class#getDeclaringClass() renvoie la classe qui a déclaré la méthode spécifiée. Cela peut être utile si vous souhaitez obtenir la classe de la méthode appelante quelle que soit la trace de pile actuelle.

Exemple

Voici un exemple utilisant stacktrace pour trouver l'appelant du courant méthode :

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
if (stackTraceElements.length > 1) {
    StackTraceElement caller = stackTraceElements[1];
    System.out.println("Caller: " + caller.getClassName() + "." + caller.getMethodName());
}
Copier après la connexion

Considérations

  • L'index de l'appelant dans la trace de la pile peut varier en fonction du contexte d'appel.
  • Reflection peut ne pas être disponible dans certains environnements, comme Android.

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!

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