Clase llamadora

diegodr
29 de Enero del 2005
Hola

Me gustaría saber si se puede saber que objeto o clase invoca un método de otra clase. Por ejemplo, si tengo una clase "Familia" que tiene un campo "Padre", y desde un objeto de la clase Familia invoco al método "edad" de su campo "Padre", ¿es posible saber desde el método "edad" que la clase que lo está llamando es la clase "Padre"?

Gracias de antemano. Un saludo

Heihachi
29 de Enero del 2005
Provoca una excepción y llama a los métodos getStackTrace o printStackTrace de la excepción dentro del método edad.

Bueno, no se si hay alguna manera menos chapucera de obtener el StackTrace...

Saludos!

joakim
29 de Enero del 2005
Me parece que haciendo el siguiente codigo dentro del metodo edad lo podras saber,

this instanceof Padre

Esto te devulve un boleano, lo que estas haciendo es preguntandole si Yo(This) soy una instancia de (instanceof) de la clase Padre.

Pruevalo .....

Lemony Snicket
29 de Enero del 2005
Hola,...

Aunque tu ejemplo es muy confuso, por tu primera frase me parece entender que lo que pretendes es que un método de una clase invocado desde un método de otra clase conozca el nombre de la clase que lo invoca en tiempo de ejecución. La solución más sencilla es pasar ese nombre como argumento desde la clase que hace la invocación con...

MiClase m= new MiClase();
String nombre = m.getClass().getName();

..o bien, en el caso de métodos no estáticos de la clase invocadora con...

String nombre = this.getClass().getName();

Espero que te sirva. Un saludo.

P.D.: El uso del operador instanceOf propuesto por Joakim únicamente determinará si el objeto al que apunta la referencia this, es decir, si el propio objeto donde se ubica el método invocado es de la clase Padre o de una subclase de Padre, sin discernir dentro de esta situación. Y además no permitirá a dicho método conocer por quién está siendo invocado, que según creo es lo que pretendes...