我們在 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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

馬上開始
廣告