我正在尝试将Java中的Javascript数组转换为Java数组。我正在使用javax.script包。
我测试了这个例子,但是类型“NativeArray”无法被识别:https://dev59.com/YHM_5IYBdhLWcg3wThR3#1433489
如何让“NativeArray”类型被识别?
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Embedding_tutorial#usingJSObjs
此外,Scriptable 接口提供了 get() 和 set() 方法,因此您可以轻松枚举对象的属性并将其添加到数组中:Scriptable arr = (Scriptable) result;
Object [] array = new Object[arr.getIds().length];
for (Object o : arr.getIds()) {
int index = (Integer) o;
array[index] = arr.get(index, null);
}
[编辑] 这里有一个使用字符串数组的工作示例:
ScriptEngine js = new ScriptEngineManager().getEngineByName("JavaScript");
String ss[] = (String[]) js.eval(
"(function() {" +
" var a = java.lang.reflect.Array.newInstance(java.lang.String, 3);" +
" a[0] = 'foo';" +
" a[1] = 'bar';" +
" a[2] = 'gah';" +
" return a;" +
"})()");
System.out.println(Arrays.toString(ss)); // => [foo, bar, gah]
java.lang.String
,根据我的更新答案。 - maerics
sun.org.mozilla.javascript.internal.NativeArray
。 - Pointy