GraalVM, как перенести объект списка Java в JavaScript, чтобы я мог сделать.push().forEach() на них?
Проблема заключается в том, что когда я пытаюсь передать объект Java List (ArrayList) в javascript как ProxyArray (ProxyArray.fromList()), его нельзя использовать с.forEach и.push. Также, если я передаю объект списка Java как есть, его можно использовать с.forEach, но не с.push. Есть ли решение?
Вот суть https://gist.github.com/okrean/5d6978bac15f257b90f581f371769935
1 ответ
Экземпляр java.util.ArrayList
ведет себя как массив JS в некоторых отношениях, однако, случаи java.util.ArrayList
не установлен их прототип Array.prototype.
Это причина, почему push
функция не найдена на вашем значении, а forEach
функция, которая называется на самом деле forEach
функция, найденная в объекте Java, а не forEach
из массива JS.
Обходной путь должен преобразовать java.util.ArrayList
к массиву JS вручную, используя Java.from(value)
в JS.
Смотрите также обсуждение в этом выпуске.