Java ↔ JavaScript (Map<String, Any>) в ScriptEngine, кажется, только "выходит" из JS→Java
Я использую JS из Kotlin (Java 8)
val engine = NashornScriptEngineFactory().getScriptEngine(
arrayOf("--language=es6",
"-strict", // too much?
"--no-java",
//"--no-syntax-extensions",
"--optimistic-types"), null)
Получение карты (технически {}
) результатов, возвращаемых из функции JS в Java, работает нормально.
НО, когда я пытаюсь передать карту, я предполагал, что она будет преобразована в объект. (Потому что я привык к JSON).
var myInput = mapOf("key1" to "value1", "key2" to 1234)
((engine as Invocable).invokeFunction("myFunction", myInput)
Но myFunction(arg1)
упорно настаивает на том, что arg1 не определен, вместо ожидаемого {'key1':'value1','key2':1234}
"--No-java" убивает его, потому что его нужно поместить в HashMap? Нужно ли мне свести мою карту в вараг, потому что только базовые типы могут преодолеть разрыв?
Действительно странная часть в том, что на обратном пути, возвращая объект (карту) из JavaScript myFunction
появляется снова в Kotlin как карта просто отлично!