此代码演示了如何使用Invocable接口来调用脚本的特定功能。使用Invocable.invokeFunction()带有或不带有参数的函数名称作为函数的参数。参数值可以作为传递varargs。
package org.nhooo.example.script; import javax.script.ScriptEngineManager; import javax.script.ScriptEngine; import javax.script.ScriptException; import javax.script.Invocable; public class InvokingFunction { public static void main(String[] args) { String script = "function sayHello() {" + " sayHello(null);" + "}" + " " + "function sayHello(name) {" + " println('Hi there' + " + " ((name == null) ? '!' : ' ' + name + '!'));" + "}"; ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByExtension("js"); try { engine.eval(script); // 将引擎转换/转换为可调用的引擎。 Invocable invocableEngine = (Invocable) engine; // 调用不带参数的sayHello函数。 invocableEngine.invokeFunction("sayHello"); // 调用带有参数的sayHello函数。 invocableEngine.invokeFunction("sayHello", "Jude"); } catch (ScriptException | NoSuchMethodException e) { e.printStackTrace(); } } }