在Java中运行脚本语言,例如JavaScript。
步骤:
1、创建脚本引擎管理器 ScriptEngineManager
2、从管理器中获取一个引擎 ScriptEngine
3、通过put(key ,value) 可以创建变量到引擎上下文中
4、通过eval(String jscCode) 可以执行js代码
/** * 执行脚本语言,例如javascript */ public class TestClass { public static void main(String[] args) throws Exception { //1、创建一个脚本引擎管理器 ScriptEngineManager sem = new ScriptEngineManager(); //2、从工厂中拿到一个js脚本引擎 ScriptEngine engine = sem.getEngineByName("javascript"); //脚本内容:定义一个变量,存储到引擎上下文中 engine.put("msg","i love you"); //脚本内容:创建一个user类,里面三个属性,分别为字符串name,int的age,字符串数组schools。 String str ="var user = {name:'lurenjia',age:18,schools:['家里蹲','江南皮革厂']};"; //脚本内容:打印user类的name属性 str += "print(user.name);"; //执行脚本 engine.eval(str); //脚本内容:修改msg engine.eval("msg = 'i hat you.';"); System.out.println(engine.get("msg")); //脚本内容:定义add求和函数 engine.eval("function add(a,b){var sum =a+b;return sum;};"); //自动转型 Invocable jsInvoke = (Invocable)engine; //调用指定的add方法,获取放回值。 Object result = jsInvoke.invokeFunction("add",new Object[]{5,7}); System.out.println(result); //使用java包里面的工具,例如java.util包下面的Arrays工具类。 String jsCode = "var list = java.util.Arrays.asList([\'lurenjia\',\'caixukun\',\'aoteman\']);"; engine.eval(jsCode); //获取list List<String> list = (List<String>) engine.get("list"); for(String s:list){ System.out.println("内容为:"+s); } } }
标签:engine,脚本,Java,脚本语言,list,引擎,eval,String From: https://www.cnblogs.com/lurenjia-bky/p/16909113.html