Come può essere raggiunto con il polimorfismo invokedynamic di JDK7
-
26-10-2019 - |
Domanda
Si supponga che io sono l'attuazione di un linguaggio tipizzato in modo dinamico in cima alla JVM 7, che sostiene l'istruzione invokedynamic
ai metodi di collegamento in fase di esecuzione.
Il linguaggio tipizzato in modo dinamico ha una funzione add
che funziona su interi con l'aggiunta di loro e sulle stringhe di loro concatenazione. Supponiamo ora che add
viene chiamato da un, diciamo, elenco generico metodo di lavorazione che solo conosce (a tempo di compilazione) che contiene gli oggetti, sia interi o stringhe o entrambi.
Come può invokedynamic
aiuto me qui quando si compila il metodo da JVM bytecode in quanto ha per la spedizione verso due diverse funzioni interne, vale a dire la funzione reale che aggiunge numeri interi e la funzione reale che concatena le stringhe?
Soluzione
In breve, invokedynamic
consente di richiamare un metodo con un dato firma senza la conoscenza della classe del metodo appartiene. Se il metodo add()
prende solo un Object
(o altro tipo di base comune) come un argomento, allora si può avere metodi add(Object)
in molte classi altrimenti non correlate, e invokedynamic
sarà in grado di invocarli. Fintanto che l'oggetto di destinazione è il metodo, verrà chiamato.
Altri suggerimenti
Si potrebbe anche guardare a questi articoli correlati:
Nel corso della mia ricerca ho anche trovato il seguente link, che mi piacerebbe condividere:
Si tratta di una raccolta di codice sorgente che mostra come utilizzare JSR 292 per implementare schemi abituali che si possono trovare in runtime linguaggio dinamico. (Descrizione copiato da loro pagina.)