Предположим, что я реализую динамически типизированный язык поверх JVM 7, который поддерживает инструкцию invokedynamic
для связи методов во время выполнения.
Динамически типизированный язык имеет функцию add
, которая работает нацелые числа, добавляя их и в строках, соединяя их.Теперь предположим, что add
вызывается, скажем, универсальным методом обработки списка, который знает только (во время компиляции), что он содержит объекты, либо целые числа, либо строки, либо и то и другое.
Как может помочь invokedynamic
мне здесь при компиляции метода в байт-код JVM, поскольку он должен отправлять две разные внутренние функции, а именно фактическую функцию, которая добавляет целые числа, и фактическую функцию, которая объединяет строки?