Ver la Versión Completa : [ CONSULTA ] Como hacer un eval?
javvargas
23/08/11, 03:57:34
Quisiera saber como se puede iterar en java para que evalue un script, es decir, quiero simplificar las lineas para generar esto:
rg1_1.setVisibility(0);
rg1_2.setVisibility(0);
rg1_3.setVisibility(0);
rg1_4.setVisibility(0);
rg1_5.setVisibility(0);
donde pueda hacer un loop for para sustituir n por el numero de iteración --> rg1_n
Y que utilice algo así como la función eval en javascript.
Se que se puede hacer en java con javax.script pero en android no existe.
Les agradezco de antemano.
iliberis
23/08/11, 04:27:41
Ante todo, no se si esto se puede hacer en este Java "recortado". En teoría es una característica de cualquier lenguaje OOP, y no de sus librerias. Yo intentaría agrupar esos objetos en una colección que luego se puede recorrer. La "macrosustitución" (como se conocía antes), es una característica que muy pocos lenguajes poseen.
A ver si alguien con más experiencia lo puede aclarar. Yo, al menos, es la técnica que uso para cosas similares en casi todos los lenguajes que programo. En especial para objetos visuales.
pmaicas
23/08/11, 11:09:38
Lo podrías hacer en javascript, usando un webview, porque se puede interactuar entre le javascript y el java. Complicado e incluso absurdo, pero se puede.
Tambien se puede usar "java reflection", coloca estas dos palabras en google. No es eval porque no evalua expresiones, pero para ese ejemplo que has puesto sirve.
Acceder en tiempo de ejecucion a los nombres de sus objetos, datos y métodos no es una caracteristica de la OOP, es una caracteristica de los lenguajes interpretados, en ningun lenguaje compilado que se precie se puede hacer eso, por muy OOP que sea. En este caso java conserva los nombres despues de compilar, nunca me ha gustado eso, pues es uno de los motivos por los que luego es tan facil aplicar la "ingenieria inversa".
De todas formas tu problema -si me lo permites- es de un pésimo diseño de la aplicación, eso de tener una lista de datos que no forma parte realmente de una lista ni array y que ni siquiera se ha creado dinámicamente por lo que parece, es un error.
iliberis
23/08/11, 16:45:23
Acceder en tiempo de ejecucion a los nombres de sus objetos, datos y métodos no es una caracteristica de la OOP, es una caracteristica de los lenguajes interpretados,
Me he expresado muy mal, ahora que releo el post. Me refería a las colecciones de objetos más bien. Podría ser una buena solución también. Aunque lo de usar la reflection... ni se me había pasado por la cabeza.
en ningun lenguaje compilado que se precie se puede hacer eso, por muy OOP que sea.
En Clipper se podía, y era compilado. Pero también conservaba las tablas de símbolos, lo que facilitaba la descompilación. Aunque este lenguaje era OOP sólo "a medias", al ser de los primeros.
Ni Java ni .NET son realmente compilados. Se basan en una maquina virtual, que es sencillamente una evolución del viejo concepto de intérprete.
De todas formas tu problema -si me lo permites- es de un pésimo diseño de la aplicación, eso de tener una lista de datos que no forma parte realmente de una lista ni array y que ni siquiera se ha creado dinámicamente por lo que parece, es un error.
En mi opinión, lo mejor sería, si es posible, cambiar un poco el diseño de esa aplicación. Yo simplemente crearía los objetos dinámicamente y los iría colocando en una colección. De esa forma se pueden después recorrer fácilmente y modificar sus propiedades de forma efectiva.
javvargas
24/08/11, 14:43:15
OK. Muchas gracias por sus comentarios. Intentare por java reflection.
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.