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();
Chaque StackTraceElement propose plusieurs méthodes d'assistance pour obtenir des informations sur la pile frame :
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();
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!