按照这个答案,看来最好的选择是编写一个JavaScript转换器函数,该函数使用Rhino的Java绑定功能将本机JavaScript数组转换为Java数组。请注意,转换单个元素时,必须格外小心以使用正确的类型。
这是一个使用字符串数组的工作示例:
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]