作用:运行时动态执行脚本
方法: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 txt
FileReader fr = new FileReader(
"---------\\javascript\\people_animal.js");
Bindings bindings = new SimpleBindings();
//case1
People 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 compiling
System.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