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?
5
A
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
- 1. In che modo il debugger ottiene informazioni sul tipo di un oggetto inizializzato su null?
- 2. Come si ottiene il nome completo della classe in Eclipse?
- 3. Debugger Xcode 7.3 che non mostra variabili di classe personalizzate
- 4. Decifrare le informazioni variabili durante il debug di Java
- 5. simulare le variabili private in python
- 6. Un modo semplice per incrementare le variabili private?
- 7. Classe membro statica: dichiarare la classe private e il membro della classe package-private?
- 8. Informazioni sulle variabili di ambiente R e sui concetti correlati
- 9. Come faccio a fare in modo che il debugger di VC++ si interrompa sulle eccezioni?
- 10. forzare ottenere/impostare l'accesso di variabili private per proprietà private
- 11. Dichiarazione di variabili membro private
- 12. Informazioni sulle matrici tridimensionali
- 13. Informazioni sulle chiusure Python
- 14. AS3: le variabili private devono avere un _
- 15. Come utilizzare il debugger OcaIDE in Eclipse?
- 16. nascondi variabili non esistenti in Eclipse java debugger
- 17. Informazioni sulle matrici OpenGL
- 18. Il debugger di Android Studio non mostra le variabili locali
- 19. Iterazione sulle proprietà della classe
- 20. Qual è il modo migliore per memorizzare le variabili di classe in PHP?
- 21. variabili di istanza della classe python e variabili di classe
- 22. Come eseguire un controllo di disponibilità sulle variabili di classe
- 23. Come si ottiene una classe interna per ereditare il tipo generico della classe che include?
- 24. In che modo Object.observe() influisce sulle prestazioni?
- 25. Quante informazioni condividono le variabili di matrice?
- 26. Recupera informazioni sulle celle di celle
- 27. Informazioni sulle filiali OCaml
- 28. Informazioni sulle transazioni in Entity Framework
- 29. Come configurare il debugger di ColdFusion Eclipse
- 30. Dove/In che modo Eclipse memorizza le librerie utente?
... 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
@aioobe la stessa risposta della domanda principale: usa il debugger java che fa parte del framework java :) – dube
sì :) L'ho capito :) – aioobe