L'introspection (ou réflexion) est considérée, en gros, comme la capacité d'un programme de revenir sur son état pendant l'exécution.
Si j'ai bien compris le "revenir", le programme peut analyser voire changer son code pour un intérêt précis. Des compilateurs incluent du code faisant de la réflexion pour déboguer par exemple.
1- Le programme qui analyse son propre état me convient puisque j'ai testé quelques instructions de l'API reflex de JAVA telle que getclass et compagnie (attributs, méthodes et constructeurs).
2- Je ne vois pas comment le programme peut changer son propre code ?
Si on arrive à m'expliquer, je pourrai accepter le fait qu'il y ait des choses nouvelles que notre programme n'a pas pu voir venir; et là, la définition me serait clair.
3- Une citation que j'ai dû croiser me fait réfléchir:
Tout d'abord, Il faut bien programmer ces opérations; elles ne peuvent tomber du ciel. Quand on me dit la réflexion permet de créer des objets en dynamique. Cela ne me pose pas de problème, mais j'ai bien inséré des instructions me permettant de saisir l'objet en dynamique puis analyser ses caractéristiques. Tout était prévu même si on ignore de quel objet il s'agit.La réflexion nous permet de faire des opérations dont notre programme n'a même pas vu le code .
On savait très bien, que l'objet à venir provient d'une telle classe qui hérite d'une telle ou telle classe..... On a toujours des indications et heureusement!
Dans un programme classique, si on saisit une valeur par le clavier, on peut ne pas connaitre à l'avance le type de cette dernière en utilisant le généricité par exemple; ce n'est pas pour autant qu'on parle de réflexion;
Résumé: Si on me demande de créer un objet en dynamique sans savoir vraiment le type, je penserai plutôt à la généricité. Je me trompe surement!!
Ma grande question :
Est ce que la réflexion se limite à la capacité d'un programme d'analyser son propre code lors de l'exécution : exemples: débogueur, JVM..... ?
Merci à vous
Partager