스택워커 API 모든 메소드 내에서 작업을 실행하기 위해 쉬운 필터링 및 지연 액세스를 허용합니다. Java 9에서 스택 추적 정보를 얻기 위한 효율적인 API입니다. .
StackWalker API에는 StackWalker의 세 가지 중요한 새 클래스가 있습니다. , StackWalker.StackFrame 및 StackWalker.Option .
스택워커 - StackWalker 의 기본 클래스입니다. API . StackWalker.forEach()를 사용하여 스택 프레임을 탐색합니다. 메소드를 호출하고 StackWalker.getCallerClass()를 호출하여 효율적인 방법으로 호출자 클래스를 가져옵니다. 방법. StackWalker.walk()를 사용하여 스택 추적을 살펴보고 스택 프레임 스트림에 함수를 적용합니다. 방법.
StackWalker.StackFrame - 정적 중첩 클래스입니다. StackWalker의 메서드이며 StackWalker의 메서드 호출 반환을 나타냅니다. getDeclaringClass()와 같은 주어진 스택 프레임 정보에 액세스하는 메소드가 있습니다. , getLineNumber() 등
StackWalker.Option - 정적 중첩 클래스입니다. SackWalker.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