GraalVM如何将Java List对象传输到javascript,以便我可以对它们进行.push()和.forEach()?

时间:2018-12-26 09:17:52

标签: javascript java graalvm

问题是当我尝试将Java List(ArrayList)对象作为ProxyArray(ProxyArray.fromList())传输到javascript时,无法与.forEach和.push一起使用。另外,如果我按原样转移java List对象,则可以将其与.forEach一起使用,但不能与.push一起使用。有什么解决办法吗?

这里是要旨https://gist.github.com/okrean/5d6978bac15f257b90f581f371769935

1 个答案:

答案 0 :(得分:1)

java.util.ArrayList的实例在某些方面的行为类似于JS Array,但是,java.util.ArrayList的实例没有将其原型设置为Array.prototype。

这就是为什么在您的值上找不到push函数,而被调用的forEach函数实际上是在Java对象上找到的forEach函数,而不是{ {1}}来自JS数组。

一种解决方法是使用JS中的forEach手动将java.util.ArrayList转换为JS数组。

另请参阅this issue中的讨论。