Java · Avançado · Inglês · Técnico
invokedynamic
Instrução de bytecode do Java 7 que liga uma chamada a um método só na primeira execução, via bootstrap method. É a base de lambdas e da concatenação de strings.
Onde usar
Aparece em javap -c de código com lambda. Permite que o compilador mude a estratégia sem alterar o formato do bytecode.
Em código
Runnable r = () -> System.out.println("oi");
// javap -c -p mostra:
// invokedynamic #7, 0 // run:()Runnable
// bootstrap: LambdaMetafactory.metafactoryExemplos
Each lambda is compiled to an invokedynamic call.
Cada lambda é compilada para uma chamada invokedynamic.
The bootstrap method links the call site on first use.
O bootstrap method liga o ponto de chamada no primeiro uso.
Cuidado
O Java não expõe a instrução diretamente: é o compilador que a gera para lambdas, concatenação com + e switch com padrões.
Sinônimos
indy