您的位置:首页 > 编程语言 > Java开发

用java scripting 动态脚本配合java使用

2015-09-22 17:54 483 查看
作用:运行时动态执行脚本方法:java scripting api + java示例:Animal类
public class Animal {private int    size;private String name;public Animal(int size, String name) {this.size = size;this.name = name;}public int getSize() {return size;}public void setSize(int size) {this.size = size;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
People类
public class People {private int age;private int brother;public People(int age, int brother) {this.age = age;this.brother = brother;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getBrother() {return brother;}public void setBrother(int brother) {this.brother = brother;}}
js脚本文件
if(people.age==10){animal.name=='2'}else if(people!=null && people.age==11 && animal.name=='2'){false}
测试类import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.script.Bindings;import javax.script.Compilable;import javax.script.CompiledScript;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;import javax.script.SimpleBindings;
public static void testJs() {try {ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");//js txtFileReader fr = new FileReader("---------\\javascript\\people_animal.js");Bindings bindings = new SimpleBindings();//case1People people = new People(11, 2);Animal animal = new Animal(2, "2");bindings.put("people", people);bindings.put("animal", animal);Object result = null;if (engine instanceof Compilable) {//once compilingSystem.out.println("Compiling....");Compilable compEngine = (Compilable) engine;CompiledScript cs = compEngine.compile(fr);result = cs.eval(bindings);} else {result = engine.eval(fr, bindings);}if (result != null) {System.out.println(result);}} catch (IOException ioEx) {ioEx.printStackTrace();} catch (ScriptException scrEx) {scrEx.printStackTrace();}}
参考 :http://www.ibm.com/developerworks/cn/java/j-5things9.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: