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

2022-09-02 19:56:59

我有以下几点:

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 数组?somone 能否向我展示一个工作代码示例,说明是如何完成此操作的?它应该适用于字符串和整数数组。另外,知道在rhino引擎和java之间查找其他数据类型转换会很棒。

顺便说一句,我知道这个页面,但我真的在寻找一个工作代码示例。


答案 1
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);
}

答案 2

我不确定第一次提出这个问题时是否属于这种情况,但实现了接口。因此,转换为真正的Java数组的简单方法是:NativeArrayjava.util.List

Object[] array = ((List<?>) result).toArray();

推荐