Como obter o nome de um método que está sendo executado?
1. Visão geral
Às vezes, precisamos saber o nome do método Java atual sendo executado.
Este artigo rápido apresenta algumas maneiras simples de obter o nome do método na pilha de execução atual.
2. UsandogetEnclosingMethod
Podemos encontrar o nome do método sendo executado usando a APIgetEnclosingMethod():
public void givenObject_whenGetEnclosingMethod_thenFindMethod() {
String methodName = new Object() {}
.getClass()
.getEnclosingMethod()
.getName();
assertEquals("givenObject_whenGetEnclosingMethod_thenFindMethod",
methodName);
}
3. UsandoThrowable Stack Trace
Usar um rastreamento de pilhaThrowable nos dá o rastreamento de pilha com o método atualmente sendo executado:
public void givenThrowable_whenGetStacktrace_thenFindMethod() {
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
assertEquals(
"givenThrowable_whenGetStacktrace_thenFindMethod",
stackTrace[0].getMethodName());
}
4. Usando Thread Stack Trace
Além disso, o rastreamento de pilha de um encadeamento atual (desde o JDK 1.5) geralmente inclui o nome do método que está sendo executado:
public void givenCurrentThread_whenGetStackTrace_thenFindMethod() {
StackTraceElement[] stackTrace = Thread.currentThread()
.getStackTrace();
assertEquals(
"givenCurrentThread_whenGetStackTrace_thenFindMethod",
stackTrace[1].getMethodName());
}
No entanto, precisamos lembrar que esta solução tem uma desvantagem significativa. Algumas máquinas virtuais podem ignorar um ou mais quadros de pilha. Embora isso não seja comum, devemos estar cientes de que isso pode acontecer.
5. Conclusão
Neste tutorial, apresentamos alguns exemplos de como obter o nome do método atualmente executado. Os exemplos são baseados em rastreamentos de pilha egetEnclosingMethod().
Como sempre, você pode verificar os exemplos fornecidos neste artigoover on GitHub.