我目前正在使用 Rhino 的 javax 实现。默认情况下,Rhino 使用包装器来返回 Java 对象。Nashorn 有类似的行为还是默认返回 JavaScript 对象?
谢谢
看起来它尽最大努力返回明智的对象。使用此代码,然后更改 XXX:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("nashorn");
engine.eval("function test() { return XXX; };");
Object result = ((Invocable)engine).invokeFunction("test");
System.out.println(result.getClass().getName());
产量:
return 'hello world' = java.lang.String
return 1 = java.lang.Integer
return { name: 'Hello' } = jdk.nashorn.api.scripting.ScriptObjectMirror