java - 如何将 Rhino-JavaScript 数组转换为 Java 数组

标签 java scripting rhino jsr223

我有以下内容:

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine jsEngine = mgr.getEngineByName("JavaScript");
jsEngine.eval("function getArray() {return [1,2,3,4,5];};");
Object result = jsEngine.eval("getArray();");

如何将 sun.org.mozilla.javascript.internal.NativeArray 类型的结果对象转换为相应的 java 数组?有人可以向我展示一个工作代码示例吗?它应该适用于字符串和整数数组。另外,如果知道在哪里寻找 rhino 引擎和 java 之间的其他数据类型转换,那就太好了。

顺便说一句,i know this page但我真的在寻找一个有效的代码示例。

最佳答案

NativeArray arr = (NativeArray) result;
Object [] array = new Object[(int) arr.getLength()];
for (Object o : arr.getIds()) {
    int index = (Integer) o;
    array[index] = arr.get(index, null);
}

关于java - 如何将 Rhino-JavaScript 数组转换为 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14960196/

相关文章:

types - 在 Rust 程序和嵌入式 WebAssembly 运行时之间进行通信的最佳实践是什么?

linux - 在多个文件范围内使用 grep 搜索字符串

linux - 按目录中的文件名删除重复文件(linux)

java - 在执行过程中停止 Rhino 引擎

java - 为什么 jrunscript 不支持我的类路径?

java - 如何确定 Kotlin 类型何时映射到 Java 类型?

java - 无法运行 java 程序! NoClassDefFoundError?

java - Hadoop:mapred.LocalJobRunner:MissingResourceException

java - 在 Android 中加载/保存属性文件最方便的方法是什么?

php - EnvJS/Rhino,setTimeout() 不工作