Está cheirando a Proxy. Não tenha muita certeza, mas acho que CGLIB (http://cglib.sourceforge.net/) pode ajudar neste caso.
C
cawink
Depende, uma coisa simples talvez seria isso:
publicclassClasseA{publicvoidmetodoChamador(){ClasseBclassB=newClasseB();classB.metodoSendoChamado(this);}}publicclassClasseB{publicvoidmetodoSendoChamado(Objectowner){if(ownerinstanceofClasseA){System.out.println("Fui chamado por ClasseA");}}}
T
thiagolopes
Posso ta falando besteira, mas quem sabe usando um InstaceOf para ver qual é a variavel que esta instaciando uma classe, caso seja retorne um boolean, caso contrário true.Vocês aprovam minha ideia ?
T
thingol1 like
Rode a classe "TesteClasseChamandoOutraClasse "
classClasse1{publicvoidteste(){System.out.println("O método teste da classe Classe1 foi chamado pela classe "+Util.classeChamadora());}}classClasse2{publicvoidteste(){System.out.println("O método teste da classe Classe2 foi chamado pela classe "+Util.classeChamadora());}}classClasseX{publicvoidteste(){Classe2classe2=newClasse2();classe2.teste();}}classClasseY{publicvoidteste(){Classe1classe1=newClasse1();classe1.teste();}}classUtil{publicstaticStringclasseChamadora(){Throwablethr=newThrowable();thr.fillInStackTrace();StackTraceElement[]ste=thr.getStackTrace();returnste[2].getClassName();}}classTesteClasseChamandoOutraClasse{publicstaticvoidmain(String[]args){(newClasseX()).teste();(newClasseY()).teste();}}
Existe alguma maneira de fazer isso sem que eu tenha que passar uma referencia da classe??
At.
S
Spool
Não é isso não.
Quero saber se tem como eu saber qual foi a classe que chamou um método dentro do método chamado.
At.
S
Spool
cawink:
Depende, uma coisa simples talvez seria isso:
publicclassClasseA{publicvoidmetodoChamador(){ClasseBclassB=newClasseB();classB.metodoSendoChamado(this);}}publicclassClasseB{publicvoidmetodoSendoChamado(Objectowner){if(ownerinstanceofClasseA){System.out.println("Fui chamado por ClasseA");}}}
Entao, eu nao quero passar a instancia como parametro.
Queria fazer alguma coisa com relfection ou coisa parecida.