Tooling 中级

使用 StackWalker 惰性检查栈

使用 StackWalker 惰性检查栈帧,避免实体化完整的栈跟踪。

✕ Materialized stack trace
StackTraceElement caller = Thread.currentThread()
        .getStackTrace()[2];
String callerClass = caller.getClassName();
✓ Java 9+
String callerClass = StackWalker.getInstance()
        .walk(frames -> frames.skip(1)
                .findFirst()
                .orElseThrow()
                .getClassName());
发现此代码有问题? 告诉我们。
⚡

惰性遍历

只访问操作所需的栈帧。

🧩

流式处理友好

使用标准流操作进行筛选和选择。

🎛

可配置

选项支持类引用以及隐藏帧或反射帧。

旧方式
Thread.getStackTrace()
现代方式
StackWalker
自 JDK
9
难度
中级
使用 StackWalker 惰性检查栈
可用

自 JDK 9 起广泛可用(2017 年 9 月)

StackWalker 提供栈帧的惰性流,并支持以可配置方式访问保留的类引用。代码找到所需栈帧后即可停止,无需分配完整的栈跟踪数组。