Java 9는 StackWalker API를 사용하여 스택 추적을 필터링하여 지연 액세스를 위한 효율적인 스택 워킹 방법을 제공했습니다. StackWalker 의 개체 스택을 탐색하고 액세스할 수 있습니다. 이 클래스에는 walk()와 같은 몇 가지 유용한 메서드가 포함되어 있습니다. , forEach() 및 getCallerClass() .
getCallerClass() 메서드는 이 메서드를 호출하는 메서드를 호출하는 클래스를 반환합니다. 호출하는 클래스 인스턴스를 확보하려면 RETAIN_CLASS_REFERENCE 가 필요합니다. StackWalker 인스턴스를 가져오는 동안. RETAIN_CLASS_REFERENCE StackWalker가 걷는 모든 클래스의 인스턴스를 유지합니다.
구문
public Class<?> getCallerClass()
예시
import java.lang.StackWalker.Option; public class StackWalkerTest { public static void main(String args[]) { StackWalkerTest1.test1(); } } class StackWalkerTest1 { protected static void test1() { StackWalkerTest2.test2(); } } class StackWalkerTest2 { protected static void test2() { System.out.println(StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE).getCallerClass()); } }
출력
class StackWalkerTest1