如何从脚本访问Java对象?
此示例演示如何从脚本访问Java对象。我们通过调用ScriptEngine的put(Stringkey,Objectvalue)方法将Java对象放入脚本引擎中。以后我们的脚本可以读取或访问此值。例如,我们传递一个字符串数组和一个日期对象供脚本显示。
package org.nhooo.example.script;
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
import java.util.Date;
public class AccessJavaObjectFromScript {
public static void main(String[] args) {
// 创建五种颜色的数组
String[] colors = {"White", "Black", "Red", "Green", "Blue"};
Date now = new Date();
// 下面是我们的脚本,用于读取以下内容的Java数组的值:
// 包含颜色字符串。
String script =
"var index; " +
"var colors = colorArray; " +
" " +
"for (index in colors) { " +
" println(colors[index]); " +
"}" +
"println('----------'); " +
"println('Today is ' + date); ";
// 获取一个ScriptEngine实例。
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByExtension("js");
// 使用colorArray键将颜色数组放入引擎中。
// 将数组设置为引擎后,我们的脚本将是
// 能够读取它。
engine.put("colorArray", colors);
engine.put("date", now);
try {
engine.eval(script);
} catch (ScriptException e) {
e.printStackTrace();
}
}
}我们的代码将打印如下:
White Black Red Green Blue ---------- Today is Fri Dec 21 23:03:39 WITA 2018