OVH Cloud OVH Cloud

eval sous Java ?

12 réponses
Avatar
Cenekemoi
Bonjour,

en Javascript, on peut connaître le contenu d'une variable globale par
(au moins) deux méthodes :

soit :
maVariable = "toto";
nomVariable = "maVariable";

En javascript, on peut faire :
alert( eval( nomVariable ); ==> affiche "toto"
ou (mieux) :
alert( window[ nomVariable ]); ==> affiche "toto" (équivalent à
window.maVariable)

Y a-t-il moyen (ou astuce) en Java d'avoir le même résultat, cad
connaître le contenu d'une variable globale à partir de son nom ?

Merci d'avance pour vos réponses...

--
Cordialement, Thierry ;-)

2 réponses

1 2
Avatar
Kupee
Bonjour à François-Xavier GENDRIN
Bonjour,

en Javascript, on peut connaître le contenu d'une variable globale
par (au moins) deux méthodes :

soit :
maVariable = "toto";
nomVariable = "maVariable";

En javascript, on peut faire :
alert( eval( nomVariable ); ==> affiche "toto"
ou (mieux) :
alert( window[ nomVariable ]); ==> affiche "toto" (équivalent à
window.maVariable)

Y a-t-il moyen (ou astuce) en Java d'avoir le même résultat, cad
connaître le contenu d'une variable globale à partir de son nom ?

Merci d'avance pour vos réponses...


Pour une classe on a :
Object o = new Object();
o.getClass().getDeclaredField("nomField").getBoolean(o);


Oui, merci, effectivement je dispose des noms des variables que je cherche.
Maintenant, je ne vois pas comment connaître leur *contenu*. La méthode
toString() renvoie simplement le "nom complet" de la variable.



Au vu des différentes réponses qui t'ont été apporté j'ai l'impression
que personne n'a compris exactement ce que tu voulais en fait car
cette méthode d'introspection n'a pas grand chose de commun avec les
propositions de Map et ne peut pas servir a la même chose.
En tout cas, quoi que tu fasses, il ne faut pas oublier que
l'introspection est quelque chose de très lent, donc si tu as besoin de
performances, fait attention.



Avatar
Cenekemoi
Au vu des différentes réponses qui t'ont été apporté j'ai l'impression
que personne n'a compris exactement ce que tu voulais en fait car
cette méthode d'introspection n'a pas grand chose de commun avec les
propositions de Map et ne peut pas servir a la même chose.
En tout cas, quoi que tu fasses, il ne faut pas oublier que
l'introspection est quelque chose de très lent, donc si tu as besoin
de performances, fait attention.


Merci de ta remarque mais les performances ne rentrent pas en ligne de
compte en l'état présent. C'est plus pour du debugging (ou logging)
qu'autre chose.

Sinon, les réponses précédentes m'ont, au contraire, été bien utiles
(cf. mon dernier post) mais merci à toi de t'en inquiéter...

--
Cordialement, Thierry ;-)

1 2