Tooling Fortgeschritten

Stack-Frames mit StackWalker lazy untersuchen, statt einen vollständigen Stacktrace zu materialisieren.

✕ 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());
Problem mit diesem Code entdeckt? Sag uns Bescheid.
⚡

Lazy Traversierung

Besucht nur die Frames, die die Operation benötigt.

🧩

Stream-freundlich

Filtern und Auswählen verwenden Standard-Stream-Operationen.

🎛

Konfigurierbar

Optionen unterstützen Klassenreferenzen sowie verborgene oder reflektive Frames.

Alter Ansatz
Thread.getStackTrace()
Moderner Ansatz
StackWalker
Seit JDK
9
Schwierigkeitsgrad
Fortgeschritten
Lazy Stack-Inspektion mit StackWalker
Verfügbar

Weitgehend verfügbar seit JDK 9 (September 2017)

StackWalker stellt einen lazy Stream von Stack-Frames sowie konfigurierbaren Zugriff auf beibehaltene Klassenreferenzen bereit. Code kann anhalten, sobald der benötigte Frame gefunden wurde, statt ein vollständiges Stacktrace-Array zu allozieren.