我这里有一个简短的代码
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "print(2);";
Object s =engine.eval(foo);
System.out.println(s); // printing null
我想要得到的结果是engine.eval(foo)打印出来保存在一个字符串变量中,例如s值应该是2,在这种情况下我如何实现engine.val(foo)没有返回任何东西。
1条答案
按热度按时间sg24os4d1#
问题的根本原因是javascript
print()
函数没有返回值(在typescript中是function print(): void
). 所以你的代码运行得很好(你可以看到2
在标准输出中打印),但是print(2);
哪个是void
被解释为null
.如果调用返回值的函数(或语句),它将正常工作:
也可以使用变量来处理结果: