獲得 JavaScript 腳本引擎
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine engine = scriptEngineManager.getEngineByName("javascript");
定義獲取變量
// 定義變量
engine.put("msg", "this is msg");
// 獲取變量
System.out.println(engine.get("msg"));
定義並執行方法
// 定義函數
engine.eval("function add (num1, num2) {return num1 + num2;}");
// engine 該類同樣實現了 Invocable 接口 : 轉型過去拿到 API
Invocable invocable = (Invocable) engine;
// 調用函數
Object invokeFunction = invocable.invokeFunction("add", new Object[] {10, 10});
System.out.println(invokeFunction);
執行本地 JavaScript 代碼
URL resource = JavaScriptDemo.class.getClassLoader().getResource("JavaScriptDemo.js");
FileReader fileReader = new FileReader(resource.getPath());
engine.eval(fileReader);
fileReader.close();
外部 JavaScript 代碼
/**
* 被java調用的外部 JavaScript
*/
function demo() {
var i = 110;
var j = 110;
console.log("this is a i + j : " + (i + j));
}
demo();
執行復雜的算數表達式
Object eval = engine.eval("10 * 10 + 10");
System.out.println(eval);