2010-05-04 9 views
5

questa è stata una domanda di intervista che mi è stata posta ... Ho risposto vagamente che usa riflessioni Java ... ma non ne ero sicuro. come funziona?In che modo il debugger di Eclipse ottiene le informazioni sulle variabili private all'interno della classe?

+0

... e in che modo sospende l'esecuzione in modalità di debug, ad esempio? Non conosco la risposta (quindi inserisco come commento), ma suppongo che abbia la propria VM? Sarà interessante vedere le risposte. – aioobe

+0

@aioobe la stessa risposta della domanda principale: usa il debugger java che fa parte del framework java :) – dube

+0

sì :) L'ho capito :) – aioobe

risposta

9

La chiave per la tua domanda è quasi certamente java.lang.reflect.AccessibleObject, che consente il debugger per disattivare i controlli di accesso di controllo e di curiosare. Spring utilizza lo stesso meccanismo per ottenere l'accesso alle variabili per l'iniezione delle dipendenze.

7

Esso utilizza la Java Debugger che fornisce i comandi per fare proprio questo:

jdb print myObj.myInstanceField 

Torna ai vecchi tempi ci sono stati davvero persone che fanno questo su una riga di comando! :)

NOTA: per visualizzare le variabili locali, la classe contenente deve essere stata compilata con l'opzione javac -g.

Problemi correlati