Sitelet https://javaevolved.dev/it/tooling/stack-walker.html
Tooling Intermedio

Ispeziona i frame dello stack in modo lazy con StackWalker invece di materializzare uno stack trace completo.

✕ 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());
Vedi un problema con questo codice? Faccelo sapere.

Attraversamento lazy

Visita solo i frame necessari all'operazione.

🧩

Compatibile con gli stream

Il filtraggio e la selezione usano le operazioni standard degli stream.

🎛

Configurabile

Le opzioni supportano riferimenti alle classi e frame nascosti o riflessivi.

Approccio Vecchio
Thread.getStackTrace()
Approccio Moderno
StackWalker
Dal JDK
9
Difficoltà
Intermedio
Ispezione lazy dello stack con StackWalker
Disponibile

Ampiamente disponibile dal JDK 9 (settembre 2017)

StackWalker espone uno stream lazy di frame dello stack e un accesso configurabile ai riferimenti alle classi conservati. Il codice può fermarsi non appena trova il frame necessario, anziché allocare un intero array di stack trace.