Sitelet https://javaevolved.dev/fr/tooling/stack-walker.html
Tooling Intermédiaire

Inspectez paresseusement les frames de pile avec StackWalker plutôt que de matérialiser une trace de pile complète.

✕ 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());
Un problème avec ce code ? Dites-le nous.

Parcours paresseux

Ne visite que les frames nécessaires à l'opération.

🧩

Adapté aux streams

Le filtrage et la sélection utilisent les opérations standard des streams.

🎛

Configurable

Les options prennent en charge les références de classes ainsi que les frames masquées ou réflexives.

Ancienne Approche
Trace de pile matérialisée
Approche Moderne
StackWalker
Depuis JDK
9
Difficulté
Intermédiaire
Inspection paresseuse de la pile avec StackWalker
Disponible

Largement disponible depuis JDK 9 (septembre 2017)

StackWalker expose un stream paresseux de frames de pile et un accès configurable aux références de classes conservées. Le code peut s'arrêter dès qu'il trouve la frame recherchée au lieu d'allouer un tableau complet de trace de pile.