Aller plus loin
Si l’introspection permet de découvrir les éléments qui composent une classe ou encore d’instancier un objet de manière dynamique, on se rend bien compte qu’elle ne fait que complexifier des opérations que l’on sait faire de manière bien plus simple.
Mais alors, à quoi sert donc l’introspection ?
Bien souvent, l’introspection permet de manipuler des objets, des méthodes ou des attributs qui sont inaccessibles…
Quand on crée un logiciel, il n’est pas rare d’utiliser des bibliothèques tierces développées par d’autres développeurs. Il convient alors de se plier aux règles fixées par les auteurs de ces bibliothèques. Ceux-ci peuvent avoir défini des classes ou des attributs comme privés par exemple. Il devient alors compliqué d’y accéder.
Imaginons que les classes Labrador et Dog et l’interface Animal sont "packagées" dans une bibliothèque tierce. Nous souhaitons modifier l’âge d’un chien en dehors de son constructeur. Ce n’est malheureusement pas possible, car l’attribut age est privé et aucun mutateur n’est disponible. Puisque la classe Labrador est issue d’une bibliothèque tierce, nous ne pouvons pas non plus modifier le code source pour changer la visibilité de l’attribut.
C’est ici que l’utilisation de l’introspection peut...