Descobrir nome de metodo que chama outro

Pessoal,

Seguinte… eu andei estudando sobre reflection, e dá pra fazer um monte de coisa legal, descobrir métodos, parametros, etc… não sei se é o caso de usar reflection, mas o caso é o seguinte:

MetodoA(){
    MetodoB();
}

MetodoB(){
    // exibir nome do metodo que chamou esse, no caso, "MetodoA"
}

Ou seja, chamando o MetodoA, esse chama o MetodoB… dentro do MetodoB, quero descobrir quem foi que chamou ele, nesse caso seria “MetodoA”… há como fazer isso ??

essa é boa…qual a aplicação disso exatamente? ou é somente curiosidade?

se é util ou não eu não sei, mas acredito que isso só com interceptors, instrumentação de código e inspeção da stack com um agente de vm

http://www.guj.com.br/posts/list/111487.java#601096

eu tinha pensado no e.printStackTrace(), mas ia ter que pesquisar muito pra chegar nisso thingol… mandou bem!

Eu já tava começando a programar aqui pra ver se achava um jeito…
muito boa a idéia…
muito interessante mesmo

:shock:

Cara, perfeito… nunca ia chegar nessa solução… a única coisa que fiz foi alterar a ultima linha para:

return ste [2].getMethodName();

Funcionou perfeitamente.

Muito obrigado !!
:thumbup:

excelente, salvou meu dia! :slight_smile:

Não seria reflection?

Reflection só funciona quando você já sabe qual a classe que você quer inspecionar. No meu caso, a chamada poderia vir de diferentes classes, e diferentes métodos. E era justamente isso que eu queria saber, quem foi que chamou meu método.

Reflection serve pra verificar quais os métodos e atributos de uma determinada classe, mas no meu caso era quase que óbvio que eu deveria inspecionar a pilha de chamadas de método na ordem que elas aconteceram, ou seja, pelo stackTrace, que foi justamente o que o thingol me mostrou naquele outro post.