Java 9 中的 StackWalker API?
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的靜態巢狀類,當我們透過StackWalker.getInstance()建立例項時,它為堆疊步行者提供配置堆疊幀資訊的選項。
示例
import java.util.List; import java.util.stream.Collectors; public class StackWalkingTest { public static void main(String args[]) { final List<StackWalker.StackFrame> stack = StackWalker.getInstance() .walk(s -> s.collect(Collectors.toList())); for(StackWalker.StackFrame sf : stack) { System.out.println(sf.getClassName() + "::" + sf.getMethodName() + ":" + sf.getLineNumber()); } } }
輸出
StackWalkingTest::main:6
廣告