Java - codigo OnTheFly

 
Vista:

codigo OnTheFly

Publicado por Alberto (2 intervenciones) el 13/01/2007 19:13:29
Hola,
tengo un problema que no se como solucionar. Consiste en lo siguiente. Necesito que mi codigo cree instancias de clases cuyo nombre no conozco a priori, pues el nombre de las clases vendra en un fichero de configuracion. Asi si en dicho fichero aparece la palabra SumarMatrices yo tendre que crear un objeto de la siguiente forma:

SumarMatrices sm = new SumarMatrices( );

Pero claro, no se puede pasar a new una variable. Y ese es mi problema. Intuyo que la solucion debe ser crear un programa que lea el fichero de configuracion, qu ese programa escriba mi .java con todas las sentencias new, y luego dentro del programa compilar y ejecutar. No se si se puede llamar a javac dentro del codigo, o a java....

Si alguien puede echarme una mano se lo agradecere mucho. Creo que de este tema no hay mucha documentacion, al menos yo no encuentro nada o no se como buscar...

Muchas gracias y un saludo!

Alberto.
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:codigo OnTheFly

Publicado por Ator (50 intervenciones) el 13/01/2007 21:42:44
Prueba con esto:
En el fichero donde vas a guardar los nombre de las clases, me imagino que el nombre de la clase se a completo, quiero decir, miclase.class, por ejemplo.
Si es asi prueba a crear un método en alguna clase tal que asi:

public class miClaseFactory{
public static Object getInstance(Class clazz){

Object obj = null;

try{
Class c = clazz.getClass();
obj = c.newInstance();

}catch(Exception e){
e.printStackTrace();
}

return obj;

}
}

y en la clase desde donde tu leas el fichero

public class leefichero{
.................

public void recupera_objeto(){
--leer del fichero
//String str_name = --le asignas un nombre de clase leido, por ejemplo Prueba.class;

String str_name = Prueba.class;

Prueba p = miClaseFactory.getInstance(str_name);

}

y en teoria en p tendría tu objeto tipo prueba.

Espera que te sirva de algo.

}
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

RE:codigo OnTheFly

Publicado por Oscar (78 intervenciones) el 13/01/2007 22:48:01
Hola, a eso se le conoce como reflexion. Aqui puedes encontrar un tutorial al respecto:

http://www-128.ibm.com/developerworks/library/j-dyn0603/

Saludos
Oscar
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

RE:codigo OnTheFly

Publicado por Alberto (2 intervenciones) el 14/01/2007 01:31:04
Muchas gracias a los dos por la ayuda:))
en cuanto lo tenga probado me pasare para contaros que tal salio
Un saludo!
Alberto
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