Descobrir nome de metodo que chama outro

9 respostas
marcelo.bellissimo

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 ??

9 Respostas

abelgomes

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

qmx

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

T

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

qmx

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

Balena

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

marcelo.bellissimo

: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:

bigjoe

excelente, salvou meu dia! :slight_smile:

felipehand

Não seria reflection?

marcelo.bellissimo

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.

Criado 12 de dezembro de 2008
Ultima resposta 3 de set. de 2009
Respostas 9
Participantes 7