Foros del Web » Programación para mayores de 30 ;) » Java »

Obtener clase que lanza la ejecución.

Estas en el tema de Obtener clase que lanza la ejecución. en el foro de Java en Foros del Web. Mi problema es el siguiente: Tengo la clase A y la clase B que ambas extienden de la clase C: public class A extends C{ ...
  #1 (permalink)  
Antiguo 23/01/2012, 07:04
 
Fecha de Ingreso: enero-2012
Mensajes: 5
Antigüedad: 12 años, 3 meses
Puntos: 1
Obtener clase que lanza la ejecución.

Mi problema es el siguiente:

Tengo la clase A y la clase B que ambas extienden de la clase C:

public class A extends C{
}

public class B extends C{
}



y la clase C contiene el método main:



public class C{

public static void main(String[] args){

System.out.println("Nombre de la clase ejecutada:"+...........);

}

}



Lo que necesito es que sin modificar nada de código de las clases A y B pueda obtener en el método main de la clase C quien lanzo la ejecución en la linea de comando java A o B, es decir si hago un:

>java A

Imprimir que la clase ejecutada es A

>java B

Imprimir que la clase ejecutada es B



Esto sin meter código en las clases A y B, solo desde la clase C



En el lenguaje de programación "C" el argumento 0 de la linea de comando args[0] era la propia clase ejecutada, pero en java no es así y no se de que forma obtener cual es la clase lanzada.





Espero haber sido lo suficientemente explicito para que entiendan mi problema.



Muchísimas gracias de antemano y un saludo



Luis
  #2 (permalink)  
Antiguo 23/01/2012, 11:25
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Obtener clase que lanza la ejecución.

Creo que con que la clase padre C tenga un método tipo

public String getExecutedClassName() {
return this.getClass().getName();
}

LLegaría, luego dentro del main deberías llamar

System.out.println("Nombre de la clase ejecutada: "+getExecutedClassName());
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 24/01/2012, 01:16
 
Fecha de Ingreso: enero-2012
Mensajes: 5
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Fuzzylog

Ante todo muchas gracias, agradezco tu interes.

Creo que al metodo getExecutedClassName que pones en tu respuesta solo se le puede llamar desde el main si es estatico, en cuyo caso no se podria usar el this dentro de el.

Habria que crear un objeto para poder obtener el class del objeto creado y precisamente esa es la duda que tengo, desde la clase C como se cual ha lanzado la ejecucion para poder crear un objeto de esa clase......



Muchas gracias de nuevo Fuzzylog

Un Saludo
  #4 (permalink)  
Antiguo 24/01/2012, 02:09
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Obtener clase que lanza la ejecución.

Pues nada ....

http://geekexplains.blogspot.com/200...method-in.html
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 24/01/2012, 06:22
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: Obtener clase que lanza la ejecución.

No se si estoy razonando muy en el aire pero, no tiene sentido lo que querés hacer.
El programa (el jar) siempre tiene que iniciar por el PSVM (public static void...)
No podés iniciarlo desde una clase Hija, ni ejecutandolo desde otro JAR partiendo de A o B

Si querés saber que hijo creo la clase, esa info tiene que ir en el constructor de la Class C o algún otro método de esta.
__________________
BadProgrammerException!

Etiquetas: clase
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:32.