invokedynamic
команда используется для того, чтобы помочь VM определить ссылку метода во время выполнения, а не связать ее во время компиляции.
Это полезно для динамических языков, где точный метод и типы аргументов неизвестны до выполнения. Но это не относится к Java lambdas. Они переводятся в статический метод с четко определенными аргументами. И этот метод можно вызвать с помощью invokestatic
.
Итак, зачем нужна invokedynamic
для lambdas, особенно когда есть удар производительности?