C'est une question qui m'a été posée lors d'un entretien. J'ai vaguement répondu qu'elle utilisait des réflexions Java mais je n'étais pas sûr. Comment cela fonctionne-t-il ?
Réponses
Trop de publicités?La clé de votre question est certainement java.lang.reflect.AccessibleObject
qui permet au débogueur de désactiver les contrôles d'accès et de s'y aventurer. Spring utilise le même mécanisme pour obtenir l'accès aux variables pour l'injection de dépendances.
Il utilise le Débogueur Java qui fournit des commandes pour faire exactement cela :
jdb print myObj.myInstanceField
Dans le temps, il y avait vraiment des gens qui faisaient ça en ligne de commande ! :)
NOTE : Pour afficher les variables locales, la classe qui les contient doit avoir été compilée avec l'option javac -g.