Java - Llamar a clase desde String

 
Vista:

Llamar a clase desde String

Publicado por Lehmer (1 intervención) el 29/05/2009 22:58:06
Pues eso. Tengo un programa en el cual, en un punto se llama a una funcion de una clase hija, que opera con unos numeros de la clase apdre y los alamcena en una variable de la padre. Vamos, basicamente la clase hija ejecuta una funcion. El caso es que según para qué uso debemos usar una función u otra (o sea llamar a una clase hija distinta). Por ahora todas las clases hijas se llman igual, estan compiladas y los class estan guardados en carpetas indep "por temas". Cada vez que se va a corresr l programa se coge una copia del class del tema corresp y se coloca en la carpeta ppal. Ahora, sería mucho más cómodo poder tener todos los class en la misma carpeta numerados:
BT1.class
BT2.class
BT3.class
...
y que la clase principal eligiese (en funcion del valor de una variable) a qué clase hija llamar, esto es:

si i=1 ejecuta BT1.funcion();
si i=3 ejecuta BT3.funcion();
...
si i=2658 ejecuta BT2658.funcion();

La funcion de la clase hija NO necesita parametros, pues los "coge" de la padre, pero se desconoce a la hora e programar si vamos a tener 1, 20 o 200 calses hijas distintas y su numeracion (pues de saberlo haríamos un case). Por ello queremos que en el principal se pida al iniciar un numero (1 por defecto), y que se pudiera hacer algo del tipo

String hola = "BT"+Integer.toString(numero)+".funcion()";
eval(hola);

donde "eval" es la funcion que desconozco

Gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Llamar a clase desde String

Publicado por Mario (40 intervenciones) el 01/06/2009 10:39:36
Para llamar a una clase por su nombre, puedes hacerlo de la siguiente forma:

Class.forName("claseDeseada");

Ese método te devuelve un objeto de esa clase. Si eso te sirve... investiga un pokito más, y verás que hay métodos para averiguar que atributos tiene dicha clase, etc.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar