编程语言
首页 > 编程语言> > Java表达式计算工具-Aviator的使用

Java表达式计算工具-Aviator的使用

作者:互联网

Java表达式计算工具-Aviator的使用

添加依赖:

<!-- https://mvnrepository.com/artifact/com.googlecode.aviator/aviator -->
<dependency>
    <groupId>com.googlecode.aviator</groupId>
    <artifactId>aviator</artifactId>
    <version>5.3.0</version>
</dependency>

Aviator 有两种常用的使用方式:

直接在Java代码中

基本使用: 引入依賴直接在Java代码中传入需要计算的表达式和变量的值

@Test
public void test1() {
    Map<String, Object> paramMap = new HashMap<>();
    paramMap.put("x", 12);
    paramMap.put("y", 10);
    String expression = "x + y";
    Long value = (Long) AviatorEvaluator.compile(expression).execute(paramMap);
    Assert.isTrue(NumberUtil.equals(value, 22L));
    log.info("计算成功: {} = {}", expression, value);
}

如上面代码所示:基本使用非常简单。直接使用AviatorEvaluator类提供的方法即可, 使用Map<String, Object>
来传递表达式的参数。需要注意的是,传递参数的Map的Value类型必须是Object,
且计算返回的值默认是Object类型,需要根据代码上下文转换为所需要的类型。

av脚本中使用

先写一个.av的脚本, 语法和JS有点相似

脚本目录:resources/av/test1.av

let a = 1;
let c = -2;

println(a + b);

再在Java代码中调用执行

@Test
public void testSimpleAvScript() {
    Expression expression = AviatorEvaluator.getInstance().compileScript("av/test1.av");
    expression.execute();
}

Aviator计算数字类型转换

参考文档:

AviatorScript相关语法详情请: https://www.yuque.com/boyan-avfmj/aviatorscript/lvabnw

标签:Java,double,long,av,Aviator,表达式
来源: https://www.cnblogs.com/annamaple/p/16655762.html