StackWalker API 簡単なフィルタリングと遅延アクセスを使用して、任意のメソッドでタスクを実行できます。これは、スタック トレース情報を取得するための Java 9 の効率的な API です。
StackWalker API に 3 つの重要な新しいクラス (StackWalker、 StackWalker.StackFrame、および StackWalker.Option) が追加されました。
StackWalker − >StackWalker API のメインクラスです。 StackWalker.forEach() メソッドを使用してスタック フレームを走査し、StackWalker.getCallerClass() メソッドを呼び出すことで呼び出し元クラスを効率的に取得します。 StackWalker.walk() メソッドを使用してスタック トレースをたどり、スタック フレーム ストリームに関数を適用します。
StackWalker.StackFrame − これは StackWalker の static ネストされたクラス であり、StackWalker のメソッド呼び出しの戻りを表します。 getDeclaringClass()、getLineNumber() など、特定のスタック フレームの情報にアクセスするメソッドがあります。
StackWalker.Option - これは StackWalker の 静的ネスト クラス です。SackWalker.getInstance() を通じてインスタンスを作成すると、次のものが提供されますスタック フレーム情報を構成するオプションを備えたスタック ウォーカー。
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 中国語 Web サイトの他の関連記事を参照してください。