首頁 >Java >java教程 >Java 9中的StackWalker API?

Java 9中的StackWalker API?

PHPz
PHPz轉載
2023-09-11 13:21:08879瀏覽

Java 9中的StackWalker API?

StackWalker API 允許輕鬆過濾和延遲存取以在任何方法中執行任務。它是Java 9中用於取得堆疊追蹤資訊的高效 API。

StackWalker API 中新增了三個重要類別:StackWalker StackWalker.StackFrameStackWalker.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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除