需求:
1、例如if(score>=85){return 1;}else if(score>=70){return 2;}else if(score>=60){return 3;}else{return 4;}有这一串字符串,要执行这个字符串,
如果score为86分,则能得到1;如果score为30分,则能得到4;/2、
2、或者知道有score=A*B*C这一个字符串,计算出score,其中A/B/C在程序中拿到。
搜资料发现,这一块技术点叫,简单高效的轻量级Java表达式引擎:Aviator
3、pom.xml文件追加如下依赖:
<dependency><groupId>com.googlecode.aviator</groupId><artifactId>aviator</artifactId><version>5.3.0</version></dependency>
4、在java中编写如下代码:
package com.hmblogs.backend.util;import com.alibaba.fastjson.JSONObject;
import com.googlecode.aviator.AviatorEvaluator;
import org.junit.Test;public class CalculateUtil {@Testpublic void main(){String expression2 = "score=A*B*C";JSONObject parseObject = new JSONObject();parseObject.put("A", 3);parseObject.put("B", 3);parseObject.put("C", 1);Object execute2 = AviatorEvaluator.execute(expression2, parseObject);System.out.println("结果为:"+execute2);}
}
5、执行该方法,结果为:9