public class ClasseA
{
public void metodoChamador()
{
ClasseB classB = new ClasseB();
classB.metodoSendoChamado( this );
}
}
public class ClasseB
{
public void metodoSendoChamado( Object owner )
{
if ( owner instanceof ClasseA )
{
System.out.println( "Fui chamado por ClasseA" );
}
}
}
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 ?
class Classe1 {
public void teste() {
System.out.println ("O método teste da classe Classe1 foi chamado pela classe " +
Util.classeChamadora() ) ;
}
}
class Classe2 {
public void teste() {
System.out.println ("O método teste da classe Classe2 foi chamado pela classe " +
Util.classeChamadora() ) ;
}
}
class ClasseX {
public void teste() {
Classe2 classe2 = new Classe2();
classe2.teste();
}
}
class ClasseY {
public void teste() {
Classe1 classe1 = new Classe1();
classe1.teste();
}
}
class Util {
public static String classeChamadora () {
Throwable thr = new Throwable();
thr.fillInStackTrace ();
StackTraceElement[] ste = thr.getStackTrace();
return ste [2].getClassName();
}
}
class TesteClasseChamandoOutraClasse {
public static void main(String[] args) {
(new ClasseX()).teste();
(new ClasseY()).teste();
}
}
A saída deve ser:
O método teste da classe Classe2 foi chamado pela classe ClasseX
O método teste da classe Classe1 foi chamado pela classe ClasseY