StackWalker API 允许轻松过滤和延迟访问以在任何方法中执行任务。它是Java 9中用于获取堆栈跟踪信息的高效 API。
StackWalker API 中新增了三个重要类:StackWalker、 StackWalker.StackFrame 和 StackWalker.Option。
StackWalker − 它是 中的主类>StackWalker API。我们使用StackWalker.forEach()方法遍历堆栈帧,并通过调用StackWalker.getCallerClass()方法高效地获取调用者类。我们使用 StackWalker.walk() 方法遍历堆栈跟踪并在堆栈帧流上应用函数。
StackWalker.StackFrame − 它是 StackWalker 的一个静态嵌套类,表示 StackWalker 的方法调用返回。它具有访问给定堆栈帧信息的方法,例如 getDeclaringClass()、getLineNumber() 等。
StackWalker.Option - 它是 StackWalker 的一个静态嵌套类,当我们通过 SackWalker.getInstance() 创建实例时,为 stack walker 提供配置堆栈帧信息的选项。
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>
以上是Java 9中的StackWalker API?的详细内容。更多信息请关注PHP中文网其他相关文章!