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

¿Cómo hacer un eval(String)?

Estas en el tema de ¿Cómo hacer un eval(String)? en el foro de Java en Foros del Web. Hola, quizá la pregunta sea un poco absurda pero no sé cómo puedo conseguir en Java ejecutar una sentencia que venga en un String. Es ...
  #1 (permalink)  
Antiguo 30/06/2007, 09:17
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 20 años, 8 meses
Puntos: 1
¿Cómo hacer un eval(String)?

Hola, quizá la pregunta sea un poco absurda pero no sé cómo puedo conseguir en Java ejecutar una sentencia que venga en un String. Es decir, igual que se hace con la función 'eval()' de javascript o PHP.

La misma duda tengo para saber si existe una variable u objeto, sería en este caso el equivalente a las funciones 'empty()' o 'isset()' de PHP.

Muchas gracias y un saludo.
  #2 (permalink)  
Antiguo 30/06/2007, 09:41
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: ¿Cómo hacer un eval(String)?

Aqui tienes la lista de metodos que puedes usar para String:http://java.sun.com/j2se/1.5.0/docs/...ng/String.html. En tu caso se puede servir equals.
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #3 (permalink)  
Antiguo 30/06/2007, 09:52
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 20 años, 8 meses
Puntos: 1
Re: ¿Cómo hacer un eval(String)?

Hola y gracias por la respuesta.
Pero me temo con la clase String no hay nada para hacer un 'eval'
  #4 (permalink)  
Antiguo 30/06/2007, 10:05
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: ¿Cómo hacer un eval(String)?

Ummm, Java directamente no soporta ese tipo de construcciones pero en cambio si te permite usar Reflection para muchas cosas, y desde Java 6 te permite ejecutar lenguajes dinámicos a través del Java Scripting API.

De todas formas, si explicas lo que quieres hacer, quiza haya una forma "estilo Java" de hacerlo sin tener que recurrir a Eval, y si no pues se busca como usar las alternativas mencionadas al principio.

S!
  #5 (permalink)  
Antiguo 02/07/2007, 03:23
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 20 años, 8 meses
Puntos: 1
Re: ¿Cómo hacer un eval(String)?

Hola GreenEyed y gracias por tu respuesta. He visto algo de eso de incluir script. Creo que la clase Statament sirve para ello.

Voy a intentar explicar el caso real donde necesito realizar el eval:
Estoy usando el sistema Loggin de java (java.util.Logging)
Para setear el nivel del log (constante Level.x) necesito pasar el level desde un valor que tengo en una variable. De esta forma la sentencía, usando hipotéticamente eval() debería ser así:

// valorLevel es una variable que contiene el Nivel ("WARNING","INFO" etc..)
valorLevel = "INFO";
eval( "Logs.myLog.setLevel(Level."+valorLevel+")" );

De esta forma la evaluación de la sentencia ejecutaría:
Logs.myLog.setLevel(Level.INFO);

Espero haberme explicado bien. Gracias y un saludo.
  #6 (permalink)  
Antiguo 02/07/2007, 04:59
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: ¿Cómo hacer un eval(String)?

// valorLevel es una variable que contiene el Nivel ("WARNING","INFO" etc..)
valorLevel = "INFO";
// Si el valor es incorrecto, este metodo lanzara una IllegalArgumentException
Level elNivel = Level.parse(valorLevel);
Logs.myLog.setLevel(elNivel);

Y listo.
S!

La verdad, esta en el API
  #7 (permalink)  
Antiguo 02/07/2007, 05:08
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 20 años, 8 meses
Puntos: 1
Re: ¿Cómo hacer un eval(String)?

Hola de nuevo. siento no haber mirado primero en la propia clase, daba por hecho que no estaba y como en otras ocasiones ya me había hecho falta lo del 'eval' quise preguntar.

Muchas gracias.
  #8 (permalink)  
Antiguo 02/07/2007, 05:44
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: ¿Cómo hacer un eval(String)?

No pasa nada, a veces no hay ese metodo que hace falta y yo antes de mirarlo ni sabia que existía. En mi caso es ya "defecto profesional" lo de mirar el API lo primero .

La cuestión del "eval" es que no encaja mucho con la filosofía de Java, que suele inclinarse hacia que el compilador sea capaz de detectar los errores cuanto antes y no lleguen a ocurrir en ejecución, y y que en caso de ocurran en ejecucion tengas delimitado donde pueden ocurrir. El eval es como "usar el compilador" en ejecución y por eso no pega mucho, así que normalmente suele haber soluciones alternativas, que a veces requieren bastante más código.

No entrare en debates sobre si es mejor o peor, pero Java es así.
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 12:43.