Saber quem chamou!

4 respostas
C

ai galera ve se alguem pode me ajudar
tenho 3 classes A ,B,C a classe A e B vai chamar um metodo da classe C.
minha duvida e o sequinte: quero saber no metodo da classe C qual a classe e qual metodo que chamou esse medodo da classe C.

public class A {
   public void metodoa(){
    C c = new C();
       c.metodoC();
   }
}
public class B {
   public void metodob(){
    C c = new C();
       c.metodoC();
   }
}
public class C {
   public void metodoc(){
    System.out.println("Quem me chamou!!!!");
   }
}

4 Respostas

A

Pesquisa sobre um tal de StackTraceElement e o comando throw, ai voce terá uma idéia de como fazer.

Falow.

rodrigo_corinthians

Não é uma solução a nível de código no eclipse clica em cima do método com as teclas Crtl+Shift+G.

peczenyj

Uma solução seria vc lançar uma exception dentro de um bloco try / catch e, ao pega-la, pegar o array de StackTraceElement – via getStackTrace() – e pegar o ultimo elemento desse array.

public class A { public static void main(String [] x){ C c = new C(); c.metodoC(); } } class C { public String getClasse(){ try{ throw new Exception(); }catch(Exception e){ StackTraceElement [] ste = e.getStackTrace(); return ste[ste.length -1].getClassName(); } } public void metodoC(){ System.out.println("Quem me chamou foi a classe: " + getClasse()); } }

Abdon

Não precisa dar um throw, basta vc instanciar o objeto:

Throwable t = new Throwable();
t.printStackTrace();

Ai pegar o stacktrace e tratar da forma que vc acha melhor.

Criado 1 de agosto de 2007
Ultima resposta 1 de ago. de 2007
Respostas 4
Participantes 5