1 回答
TA贡献1898条经验 获得超8个赞
问题的根本原因是 Javascript 的print()函数没有返回值(在 TypeScript 中则返回值function print(): void)。因此,您的代码工作得很好(您实际上可以看到2在标准输出中打印),但其返回值print(2);被void解释为null.
如果您调用返回值的函数(或语句),它将正常工作:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "x = 1+2;";
Object s = engine.eval(foo);
System.out.println(s); // printing 3
您还可以使用变量来处理结果:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String jsCode = "jsVar = 1+2;";
engine.eval(jsCode);
Object javaVar = engine.get("jsVar");
System.out.println(javaVar); // printing 3
添加回答
举报