我们在 Java 9 中什么时候可以使用 StackWalker.getCallerClass() 方法?


Java 9 通过使用 StackWalker API 对堆栈跟踪进行懒访问和筛选,提供了一种高效的堆栈遍历方式。 StackWalker 对象允许我们遍历和访问堆栈。这个类包含一些有用的方法,例如 walk()forEach()getCallerClass()

getCallerClass() 方法返回调用此方法的方法所调用的类。要获取调用类实例,我们需要在获取 StackWalker 实例时使用 RETAIN_CLASS_REFERENCE 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

更新日期: 2020-03-30

257 次浏览

开启你的 职业生涯

通过完成课程获得认证

马上开始
广告
© . All rights reserved.