esempi del mondo reale:
Se si genera il progetto con jdesktop 0.8, ma nave con jdesktop 0.9, il codice sarà comunque utilizzare le funzioni di 0,9, perché sfrutta l'associazione tardiva, ovvero il codice che il codice chiama è la versione caricata dal programma di caricamento classi, indipendentemente dalla versione con cui è stato compilato. (Questo è in contrasto con i linker, che incorporano la versione in fase di compilazione del codice chiamato nell'applicazione.)
Per la riflessione, diciamo che stai cercando di scegliere come target Java 1.5 e 1.6, ma vuoi utilizzare i componenti della scheda in 1.6 se sono disponibili, verificherete la loro presenza utilizzando la riflessione sulla classe JTabbedPane per trovare il metodo setTabComponentAt
. In questo caso stai costruendo contro Java 1.5, che non ha affatto queste caratteristiche, quindi non puoi chiamarle direttamente o la compilazione fallirà. Tuttavia se sul sistema dell'utente finale ci si trova a correre contro 1.6 (l'associazione tardiva entra in gioco qui) è possibile utilizzare la riflessione per chiamare metodi che non esistevano in 1.5.
Sono correlati; molti usi della riflessione si basano sul binding tardivo per essere utili, ma sono aspetti fondamentalmente diversi della lingua e della sua implementazione.
Non sono sicuro delle prestazioni è davvero la dimensione migliore per prendere in considerazione quando si confrontano tali caratteristiche diverse di una lingua, hanno lo scopo di risolvere i problemi differenti ... –