StackWalker API permet un filtrage facile et un accès différé pour effectuer des tâches de n'importe quelle méthode. Il s'agit d'une API efficace dans Java 9 pour obtenir des informations de trace de pile.
Trois nouvelles classes importantes ont été ajoutées à l'API StackWalker : StackWalker, StackWalker.StackFrame et StackWalker.Option.
StackWalker − C'est la classe principale de >StackWalker API. Nous utilisons la méthode StackWalker.forEach() pour parcourir le cadre de pile et obtenir efficacement la classe de l'appelant en appelant la méthode StackWalker.getCallerClass(). Nous utilisons la méthode StackWalker.walk() pour parcourir la trace de la pile et appliquer une fonction sur le flux du cadre de pile.
StackWalker.StackFrame − Il s'agit d'une classe imbriquée statique de StackWalker, qui représente le retour d'appel de méthode de StackWalker. Il dispose de méthodes pour accéder aux informations d'un cadre de pile donné, telles que getDeclaringClass(), getLineNumber(), etc.
StackWalker.Option - Il s'agit d'une classe imbriquée statique de StackWalker Lorsque nous créons une instance via SackWalker.getInstance(), elle fournit au stack walker des options pour configurer les informations sur le cadre de pile.
import java.util.List; import java.util.stream.Collectors; public class StackWalkingTest { public static void main(String args[]) { final <strong>List<StackWalker.StackFrame></strong> stack = StackWalker.<strong>getInstance()</strong> .<strong>walk</strong>(s -> s.<strong>collect</strong>(Collectors.toList())); for(<strong>StackWalker.StackFrame</strong> sf : stack) { System.out.println(sf.<strong>getClassName()</strong> + "::" + sf.<strong>getMethodName()</strong> + ":" + sf.<strong>getLineNumber()</strong>); } } }
<strong>StackWalkingTest::main:6</strong>
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!