Home  >  Article  >  Java  >  StackWalker API in Java 9?

StackWalker API in Java 9?

PHPz
PHPzforward
2023-09-11 13:21:08829browse

Java 9中的StackWalker API?

StackWalker API Allows easy filtering and delayed access to perform tasks in any method. It is an efficient API in Java 9 for getting stack trace information.

Three important new classes have been added to the StackWalker API: StackWalker, StackWalker.StackFrame and StackWalker.Option.

StackWalker It is the main class in >StackWalker API. We use the StackWalker.forEach() method to traverse the stack frame and efficiently obtain the caller class by calling the StackWalker.getCallerClass() method. We use the StackWalker.walk() method to walk the stack trace and apply a function on the stack frame stream.

StackWalker.StackFrame It is a static nested class of StackWalker, which represents the method call return of StackWalker. It has methods to access the information of a given stack frame, such as getDeclaringClass(), getLineNumber(), etc.

StackWalker.Option - It is a static nested class of StackWalker. When we create an instance through SackWalker.getInstance(), Provides the stack walker with options to configure stack frame information.

Example

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>);
      }
   }
}

Output

<strong>StackWalkingTest::main:6</strong>

The above is the detailed content of StackWalker API in Java 9?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete