Sitelet https://javaevolved.dev/pl/tooling/stack-walker.html
Tooling Średniozaawansowany

Leniwa inspekcja stosu za pomocą StackWalker

Przeglądaj ramki stosu leniwie za pomocą StackWalker zamiast materializować pełny ślad stosu.

✕ 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());
Widzisz problem z tym kodem? Daj nam znać.

Leniwe przechodzenie

Odwiedza tylko ramki potrzebne danej operacji.

🧩

Przyjazne dla strumieni

Filtrowanie i wybór korzystają ze standardowych operacji strumieniowych.

🎛

Konfigurowalność

Opcje zapewniają obsługę referencji do klas oraz ramek ukrytych i refleksyjnych.

Stare podejście
Thread.getStackTrace()
Nowoczesne podejście
StackWalker
Od JDK
9
Poziom trudności
Średniozaawansowany
Leniwa inspekcja stosu za pomocą StackWalker
Dostępne

Szeroko dostępne od JDK 9 (wrzesień 2017)

StackWalker udostępnia leniwy strumień ramek stosu i konfigurowalny dostęp do zachowanych referencji do klas. Kod może zakończyć działanie po znalezieniu potrzebnej ramki, zamiast alokować całą tablicę śladu stosu.