我有一个JavaScript文件fun.js
function fun1(){
var str='apple';
var charArray = Array.from(str);
return charArray;
}
我使用nashorn将charArray返回到我的Java代码。但是nashorn给出了以下例外:
javax.script.ScriptException:TypeError:Array.from不是第25行的函数
我如何在nashorn中使用Array.from()或有什么方法可以在与nashorn兼容的js中将字符串转换为charArray。
我的Java代码是-
System.out.println("intialising parser....");
ScriptEngine engine= new ScriptEngineManager().getEngineByName("nashorn");
engine.eval(new FileReader("index.js"));
Invocable invocable= (Invocable) engine;
Object obj = (Object)invocable.invokeFunction("fun1");
最佳答案
之所以是String.toCharArray()
,是因为Nashorn允许您使用Java方法。所以你可以做
System.out.println("initializing parser....");
String js = "function fun1() { return 'apple'.toCharArray() }";
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
try {
engine.eval(js);
Invocable invocable = (Invocable) engine;
Object obj = (Object) invocable.invokeFunction("fun1");
System.out.println(Arrays.toString((char[]) obj));
} catch (Exception e) {
e.printStackTrace();
}
那输出
initializing parser....
[a, p, p, l, e]