java: fonction eval()

java: fonction eval() - Programmation

Marsh Posté le 29-01-2001 à 11:00:01    

je cherche une methode qui fonctionne comme la fonction
eval(exp)...
 
Par exemple, si on fait eval("toto"+"1"+".dort();" ) ca nous exécute toto1.dort()...
 
Merci pour toutes réponses ...


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 29-01-2001 à 11:00:01   

Reply

Marsh Posté le 29-01-2001 à 13:00:40    

je me remerci puisque je me répond :D..
Allez aidez moi !!!! :cry:


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 29-01-2001 à 14:30:42    

Waouw,
alors là tu nous poses une sacré colle !
Je ne sais pas si c'est vraiment possible à faire en java ce genre de truc...
Tu essaie de faire du java interprêté en quelque sorte ??
 
Si c'est ça, je sais que beanshell permet de faire un truc du genre (c'est du java interprêté en mode console)
http://www.beanshell.org/

Reply

Marsh Posté le 29-01-2001 à 14:44:14    

Ouais aidez le, merde !!
Pour une fois qu'il pose une bonne question :D
 
Perso, je pense que c'est possible
Tu peut y arriver d'une facon détournée:
j'avais fait pour mon projet de maitrise, un programme java qui créait un fichier .java, le compilait en .class et instanciait l'objet derrière
Mais trop bourrin, il doit y avoir une méthode, regardes dans mon bouquin

Reply

Marsh Posté le 29-01-2001 à 15:46:36    

je l'ai encore ton bouquin ??!!
Putain, j'ai du le paumer qq part :D
Par contre j'ai retrouvé ton cd... celui qui va avec ton bouquin !!! :D:D:D
 
Mais précise ton truc bourrin !!


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 29-01-2001 à 15:56:47    

je reviens du lien... Pas mal le truc.. Mais ce qui serait cool, ce serait de pouvoir voir le source de leur méthode eval() :D
Mais je crois pas que ce soit possible :(
Ptet qu'en passant par les metaclasses ou qqchose com ca :confused:


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 29-01-2001 à 16:12:07    

Metaclass, tu va prendre froid :D
 
Si, ya le source de beanshell là :
 
http://www.beanshell.org/bsh-1.1alpha3-src.jar
 
update.
Y'avait, le ficheir n'esxiste plus. En passant par le CVS par là :
http://cvs.sourceforge.net/cgi-bin [...] =beanshell
 
On a le code source.

 


--Message édité par kadreg--


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 29-01-2001 à 23:11:18    

voici un exemple mais c'est en javascript:
b.value=eval("form.prix"+ c.toString() + ".value" );
 
c.tostring() c'est pour avoir prix1,prix2,prix3...
 
Tu me dira si ça marche !
a+

Reply

Marsh Posté le 30-01-2001 à 01:28:54    

Une telle fonction eval() n'est réaliste que dans un langage interprété ; c'est un non-sens dans un langage compilé (je vous rappelle que Java est compilé).
 
Ceci dit, comme Java est fourni avec tout une librairie de classes, dont le compilateur Java lui-même (puisqu'il est écrit en Java), il est possible de générer une classe, et de le faire compiler (mais il me semble que les fonctions en question sont non documentées. Dans ce cas, il faut aller fouiner dans les sources du JDK). Après, c'est une classe compilée comme une autre...

Reply

Marsh Posté le 30-01-2001 à 09:36:20    

oki oki.. mais ca aurait ete pratique... :)


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 30-01-2001 à 09:36:20   

Reply

Marsh Posté le 30-01-2001 à 09:44:59    

C'est pas l'introspection ca justement

Reply

Marsh Posté le 30-01-2001 à 12:44:32    

introspection ??!!! :confused:
Ca me dit qqche... mais koi ??? me souviens plus :D
 
Une petite precision plzzz.


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 30-01-2001 à 16:38:29    

Tu peux toujours jouer avec la reflection.
 
Mais dans to cas, tu veux appeler la methode dort() sur l'objet toto. Or tu n'a pas de pointeur sur l'object toto, a moins que toto soit une classe et dort soit statique...
 
l'algo (en supposant toto une classe et dort statique):
s = "toto.dort()"
Class c = Class.forName(s.substring(0, s.indexOf("." ));
Method m = c.getDeclaredMethod(s.substring(s.indexOf("." )), null);
m.invoke(null, null);
 
Renaud

Reply

Marsh Posté le 30-01-2001 à 18:10:44    

Merci Renaud... Même si c pas un algo mais du codage :D
Mais le pb c que toto dans ce cas est une instance...
En fait je souhaite faire un truc du genre:
 
qd je clique sur un bouton un objet est crée dynamiquement, et possède un identifiant (un nom koi), pour que je puisse l'utiliser plus tard... Mais bien sûr, tout ca sans tableau ni liste ou encore vecteurs !!!!
C'est ca mon plus gros bleme... Mais je crois ke je vais me résigner et prendre un nombre d'objets fixes... :(


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed