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中文網其他相關文章!