javascript - GraalVM 如何将 java List 对象传输到 javascript,以便我可以在它们上制作 .push() 和 .forEach()?
问题描述
问题是当我尝试将 java List (ArrayList) 对象作为 ProxyArray (ProxyArray.fromList()) 传输到 javascript 时,它不能与 .forEach 和 .push 一起使用。此外,如果我按原样传输 java List 对象,它可以与 .forEach 一起使用,但不能与 .push 一起使用。有什么解决办法吗?
这是要点https://gist.github.com/okrean/5d6978bac15f257b90f581f371769935
解决方案
一个实例java.util.ArrayList
在某些方面表现得像一个 JS 数组,然而,实例的java.util.ArrayList
原型没有设置为 Array.prototype。
这就是为什么push
在你的值上找不到函数的原因,而forEach
被调用的函数实际上是forEach
在 Java 对象上找到的函数,而不是forEach
来自 JS 数组的函数。
一种解决方法是在JS 中java.util.ArrayList
手动将其转换为 JS 数组Java.from(value)
。
另见本期的讨论。
推荐阅读
- apache - 是恶意botting,如何防范?
- elasticsearch - Elasticsearch 过滤器 - AND/OR 行为
- python - 将 NaN 值替换为 1d Numpy 数组中先前的非 NaN 值
- c# - 如何在 FindAsync() 方法中使用 lambda 函数?
- android - 通过 Gmail 和 Facebook 登录时用户身份验证失败
- javascript - 为什么我在反应原生 Firebase 中成功异步调用后收到错误
- mysql - 在 MySQL 中执行数组文字的最简单方法
- python - 错误 - 在 CBC 模式下,数据必须填充到 16 字节边界
- c++ - 是否有复制存储在二维数组中的相邻像素值的算法?
- java - 使用spring boot data redis模板得到空指针错误