在实际的项目开发中,我们有时候需要在java中实现如javascript eval的功能。比如在财务系统和企业管理系统中我们经常通过比较复杂的公式进行计算,在项目中我们一般会把计算公式解析成字符串存储在数据库或配置文件中,且此公式在后期中可以进行调整,这样我们在实际运算的时候就需要对存储的公式进行解析和参数替换来得到计算结果,这样公式解析就成了个比较麻烦的事情,且很容易产生bug。现在给大家推荐一种java版的 js eval功能的控件bsh(Beanshell ),它能够帮助我们实现比 js eval更强大的功能,一下提供一个简单的实例供大家参考:
public static void main(String[] args) throws EvalError {
Interpreter bsh = new Interpreter();
StringBuffer yunsuan=new StringBuffer(" ");
yunsuan.append(" int aa=0; ");
yunsuan.append(" if(sb>ba){aa=10;} ");
yunsuan.append(" else if(sb<=ba){aa=20;} ");
String ddd=yunsuan.toString().replaceAll("sb", "300");
ddd=ddd.replaceAll("ba", "200");
bsh.eval(ddd);
int reint=Integer.valueOf(bsh.get("aa").toString());
System.out.println(reint);
}
在以上实例中,我们可以根据实际情况进行实现,比如计算公式由其它方式三方获得,参数替换等。
bsh 网址地址:
最新jar包地址:
http://www.beanshell.org/download.html