[Reflection] Connaître le nom d'une variable ...
... pendant l'execution d'un programme.
Voilà, en fait, j'ai disons une variable membre de classe String variable = "quelquechose", et j'aimerai savoir s'il y a un moyen simple de connaître le nom de cette variable c'est à dire variable et non sa valeur c'est à dire quelquechose, pendant l'exe d'un programme Java.
J'utilise ensuite le nom de la variable pour comparer avec des données en table.
merci.
[java.lang.reflect] Connaître le nom d'une variable ...
Y'a pratiquement que du vrai dans tous ces messages mais c'est un peu fouillis, alors pour être clair et résumer tout ça :
- les noms des membres d'une classe (attributs, champs, fields, appelez ca comme vous voulez) sont conservés dans la section "constant pool" d'un fichier .class ; c'est un ensemble de chaines de caractères et de références vers ces chaines. On peut les retrouver avec l'API java.lang.reflect très facilement.
- les variables locales n'ont pas de noms dans les specifications de la JVM. Par exemple la JVM met une variable sur la pile d'exécution avec l'instruction "aload" suivie du numéro de la variable locale. Les paramètres d'une méthode sont des variables locales donc impossible de retrouver leur nom ! il existe cependant une exception...
- lorsqu'une classe est compilée avec l'option de débuggage, le compilateur ajoute des symboles dans une section particulière des methodes d'un fichier .class (table des variables, table des numéros de lignes...etc.). C'est la seule exception qui permet de retrouver le nom d'un paramètre.
Et pour finir je dirais que dès qu'on en vient à vouloir trouver des solutions bizarres à des problèmes bizarres eux aussi, il s'agit dans 99% des cas d'un problème de design...