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?

È stato utile?

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

Nel corso della mia ricerca ho anche trovato il seguente link, che mi piacerebbe condividere:

JSR 292 Cookbook

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.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top