capypad
0 Tage Serie
java / expert
Snippet

Effizientes Stack-Walking mit der StackWalker-API

Die StackWalker-API ist eine performanceorientierte Methode zur Inspektion des Call-Stacks. Im Gegensatz zu Throwable.getStackTrace() bietet sie einen Stream-basierten Ansatz, der nur die benötigten Frames verzögert abruft, was sie ideal für Hochleistungs-Logging oder Sicherheitsprüfungen macht.

snippet.java
java
1
2
3
4
5
6
7
StackWalker walker = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
 
Optional<String> caller = walker.walk(frames ->
frames.skip(1)
.findFirst()
.map(StackWalker.StackFrame::getClassName)
);
Erklärung
1
StackWalker walker = StackWalker.getInstance(...);
Erstellt eine Walker-Instanz mit spezifischen Optionen wie dem Behalten von Klassenreferenzen.
2
frames -> frames.skip(1).findFirst()
Nutzt die Stream-API, um effizient den direkten Aufrufer der aktuellen Methode zu finden.