如何将 ScriptEngine.eval 转换为 Java 对象

How to convert ScriptEngine.eval to Java object

我正在使用 ScriptEngine 运行 Javascript。在我的例子中,Javascript 总是 return 一个布尔值。我认为 eval() 会 return 一个我可以投射的对象,但它似乎 return 一个 ScriptObjectMirror。 toString() returns [Boolean true],所以评估有效。如何转换或转换为布尔值或布尔值?

这是我的代码

final ScriptEngineManager manager = new ScriptEngineManager();
final ScriptEngine engine = manager.getEngineByName("javascript");
final Object jsEval = engine.eval(String.format("new Boolean(%s)", jsString));
System.out.printf("*** jsEval: %s %s%n ", jsEval, jsEval.getClass().getName());

输出是

*** jsEval: [Boolean true] jdk.nashorn.api.scripting.ScriptObjectMirror

如果你确定知道类型,你可以使用to方法:

jsEval.to(Boolean.class)