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

Cómo poder ejecutar código "dinámico" en Java

Estas en el tema de Cómo poder ejecutar código "dinámico" en Java en el foro de Java en Foros del Web. Buenas tardes: Quisiera saber si en JAVA hay alguna manera de ejecutar código dinámico o creado al vuelo, utilizando algo como el EVAL de JavaScript. ...
  #1 (permalink)  
Antiguo 07/08/2013, 13:00
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 2 meses
Puntos: 447
Cómo poder ejecutar código "dinámico" en Java

Buenas tardes:

Quisiera saber si en JAVA hay alguna manera de ejecutar código dinámico o creado al vuelo, utilizando algo como el EVAL de JavaScript. me explico... tengo el siguiente código:

Código Java:
Ver original
  1. private void inicializaObjeto(int a){
  2.     switch (a) {
  3.       case 1:
  4.         setObjeto1(funcion());
  5.         break;
  6.       case 2:
  7.         setObjeto2(funcion());
  8.         break;
  9.       case 3:
  10.         setObjeto3(funcion());
  11.         break;
  12.       case 4:
  13.         setObjeto4(funcion());
  14.         break;
  15.      ......
  16. }

así continua hasta generar más de 30 casos... en la clase tengo declarados todos los objetos y dependiendo del parámetro a de entrada es el objeto que se tiene que inicializar...

Con javascript yo puedo hacer algo como esto:

Código Javascript:
Ver original
  1. eval("setObjeto" + a + "(funcion());");

lo que sería equivalente a todo el SWITCH que tengo. sin embargo he leído que la función EVAL no existe en JAVA... mi pregunta es, ¿hay alguna otra manera en la que pudiera simplificar mi código? he leído que Reflection es una opción para el EVAL, pero no he encontrado un ejemplo que se pueda aplicar más o menos a lo que intento hacer.

Saludos cordiales y de antemano "Gracias Totales"
Leo.
  #2 (permalink)  
Antiguo 09/08/2013, 22:22
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 1 mes
Puntos: 260
Sonrisa Respuesta: Cómo poder ejecutar código "dinámico" en Java

Hola,

Posiblemente,

Código Java:
Ver original
  1. ScriptEngineManager manager = new ScriptEngineManager();
  2. ScriptEngine engine = manager.getEngineByName("JavaScript");
  3.  
  4. private void inicializaObjeto(int a) {
  5.     try {
  6.         engine.put("VirtualObject", this);
  7.         engine.eval("VirtualObject.setObjeto" + a + "(VirtualObject.funcion())");
  8.         System.out.println(this.o);
  9.     } catch (ScriptException ex) {
  10.         System.out.println(ex);
  11.     }
  12. }
  13.  
  14. private Object o;
  15.  
  16. public void setObjeto1(Object o) {
  17.     this.o = o;
  18. }
  19.  
  20. public Object funcion() {
  21.     return new String("Hello from JavaScript!");
  22. }

Bueno, realmente ese no es el objetivo de un ScriptEngine. Lo que sucede es que en Java no existen las funciones Lamba o referencias a funciones por el momento, y se logra el mismo objetivo con Interfaces, Generics y clases Abstractas y Concretas; en el último caso Reflection y por último el ScriptEngine (que tiene otro objetivo). Posiblemente tienes un mal diseño en la estructura de tu programa en JAVA para que necesites eso.

Saludos,

Última edición por HackmanC; 09/08/2013 a las 22:31

Etiquetas: dinamico, eval, javascript
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 11:40.