Sitelet https://javaevolved.dev/ru/tooling/stack-walker.html
Tooling Средний

Анализируйте кадры стека лениво с помощью 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());
Заметили проблему в этом коде? Сообщите нам.

Ленивый обход

Посещает только те кадры, которые нужны операции.

🧩

Удобная работа с потоками

Для фильтрации и выбора используются стандартные операции Stream API.

🎛

Настраиваемость

Параметры обеспечивают доступ к ссылкам на классы, скрытым и рефлексивным кадрам.

Старый подход
Thread.getStackTrace()
Современный подход
StackWalker
Начиная с JDK
9
Сложность
Средний
Ленивый анализ стека с помощью StackWalker
Доступно

Широко доступно начиная с JDK 9 (сентябрь 2017)

StackWalker предоставляет ленивый поток кадров стека и настраиваемый доступ к сохранённым ссылкам на классы. Код может остановиться сразу после нахождения нужного кадра, не выделяя память под весь массив трассировки стека.