JSEL表達(dá)式解釋引擎
JSEL是一個(gè)基于逆波蘭式結(jié)構(gòu),采用JS運(yùn)算規(guī)則的簡單的表達(dá)式解釋引擎。 同時(shí)它還是一個(gè)JSON解析引擎。
基本特征
- 基于逆波蘭式這個(gè)簡單的計(jì)算模型,最大的特點(diǎn)就是簡單。
- 支持短路優(yōu)化(運(yùn)算過程中,會(huì)根據(jù)需要,跳過無需計(jì)算的節(jié)點(diǎn)(boolean運(yùn)算和三元運(yùn)算有此類需求)。
- 運(yùn)算規(guī)則基于前端開發(fā)人員熟悉的JavaScript,可以用于模板引擎的表達(dá)式實(shí)現(xiàn)。
- 他同時(shí)還是JSON解釋引擎的超集,可以用于解釋JSON數(shù)據(jù)源。
- 簡單的運(yùn)算接口,可以簡單的重新定義運(yùn)算規(guī)則。
- 由于引擎本身實(shí)現(xiàn)的簡單,程序體積非常小(JAR文件只有22k,同類工具OGNL 168k);適合于嵌入其他對(duì)文件大小要求苛刻環(huán)境,如需要下載的webstart小程序。
基本用法
import org.xidea.el.Expression;
import org.xidea.el.ExpressionImpl;
import java.util.HashMap;
public class Test{
public static void main(String[] args){
Expression el = new ExpressionImpl("var1 +2 * var2");
//Expression el = new ExpressionImpl("var1 +2 * var2",new CalculaterImpl());//你也可以定義你自己的運(yùn)算規(guī)則
HashMap context = new HashMap();
context.put("var1",111);
context.put("var2",222);
Object result1 = el.evaluate(context);//555
context.put("var2",333);
Object result2 = el.evaluate(context);//777
System.out.println("result1:");
System.out.println(result1);
System.out.println("result2:");
System.out.println(result2);
}
}
評(píng)論
圖片
表情
