Tooling Intermediário

Inspecione frames da pilha de forma preguiçosa com StackWalker em vez de materializar um 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());
Viu um problema com este código? Nos avise.
⚡

Percurso preguiçoso

Visita apenas os frames necessários para a operação.

🧩

Compatível com streams

Filtragem e seleção usam operações padrão de stream.

🎛

Configurável

As opções oferecem suporte a referências de classe e frames ocultos ou reflexivos.

Abordagem Antiga
Thread.getStackTrace()
Abordagem Moderna
StackWalker
Desde o JDK
9
Dificuldade
Intermediário
Inspeção preguiçosa da pilha com StackWalker
Disponível

Amplamente disponível desde o JDK 9 (setembro de 2017)

StackWalker expõe um stream preguiçoso de frames da pilha e acesso configurável a referências de classe retidas. O código pode parar assim que encontrar o frame necessário, em vez de alocar um array completo de stack trace.