Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/08/2013, 22:22
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
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