Aviator 是一个轻量级、高性能的 Java 表达式执行引擎,它动态地将表达式编译成字节码并运行。
使用
com.googlecode.aviator
aviator
{version}
最简单直观的使用:
import com.googlecode.aviator.AviatorEvaluator;
public class TestAviator {
public static void main(String[] args) {
Long result = (Long) AviatorEvaluator.execute("1+2+3");
System.out.println(result);
}
}
更加复杂的使用方式可以参考 wiki,文档已经足够详细,不在重复。
源码解析
执行表达式
主要接口
AviatorEvaluator 最重要的一个方法
execute(String expression)
execute(String expression, Map env)
execute(String expression, Map env, boolean cached)
用来执行表达式,并获取结果。围绕这个方法也有可以传入变量的 exec 方法
exec(String expression, Object... values)
内置方法和自定义方法
自定义方法
主要可以分为以下几大类,包括数学计算相关,字符串处理相关
数学计算
MathAbsFunction
MathCosFunction
MathLog10Function
MathLogFunction
MathPowFunction
MathRoundFunction
MathSinFunction
MathSqrtFunction
MathTanFunction
字符串相关
StringContainsFunction
StringEndsWithFunction
StringIndexOfFunction
StringJoinFunction
StringLengthFunction
StringReplaceAllFunction
StringReplaceFirstFunction
StringSplitFunction
StringStartsWithFunction
StringSubStringFunction
序列相关方法
SeqCompsitePredFunFunction
SeqCountFunction # count(list) 长度
SeqFilterFunction # 过滤
SeqIncludeFunction # 是否在序列中
SeqMakePredicateFunFunction
SeqMapFunction # 遍历序列
SeqPredicateFunction
SeqReduceFunction # 求和
SeqSortFunction
SeqEveryFunction # 每个都满足
SeqNotAnyFunction # 不在
SeqSomeFunction # 序列中一个元素满足
额外的方法
BinaryFunction
BooleanFunction
Date2StringFunction
DateFormatCache
DoubleFunction
LongFunction
NowFunction
PrintFunction
PrintlnFunction
RandomFunction
StrFunction
String2DateFunction
SysDateFunction
表达式语法解析
FakeCodeGenerator
演示将中缀表达式转换为后缀表达式
reference