打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java动态执行计算表达式利器 -- ScriptEngine

在通过配置文件对系统进行参数配置时,有时需要更好的理解参数值的具体意义,往往采用计算表达式的方式设置,例如1天换成秒数为86400,如果写成24 * 60 * 60就很清晰的表达是一天的秒数。但是这个表达式通过properties的方式获取为字符串,这里就需要动态计算这个表达式。

    ScriptEngine这个对象专门用来处理动态执行表达式,主要调用其eval方法动态执行(类似于javascript中的eval方法),其返回结果为object对象;针对计算表达式的返回结果是double类型,所以这里先将object转换为double,然后根据实际需要进行强制转换。

配置文件如下:

#标准缓存时长(单位:秒)#默认为1天(24 * 60 * 60),也可以为86400std_cache_time_out=24 * 60 * 60

其用法如下:

<dependency>
    <groupId>net.fortytwo.ripple</groupId>
    <artifactId>ripple-scriptengine</artifactId>
    <version>1.2</version>
</dependency>

ScriptEngineManager _mgr = new ScriptEngineManager();//这里只调用javascript执行器,可以执行javascript脚本,除此之外还可以调用其他类型的脚本ScriptEngine _enginer = _mgr.getEngineByName("javascript");try{   String  expression = properties.getProperty("std_cache_time_out");   Object result = _enginer.eval(expression);    _MAX_CACHE_TIME_OUT = (long)Double.parseDouble(result.toString());   }  }catch(ScriptException e){       e.printStackTrace();  }

    以ScriptEngine这个接口提供的方法请参阅ScriptEngine使用API

本文出自 “好记性不如烂笔头” 博客,请务必保留此出处http://gytian.blog.51cto.com/1065457/1604847

Java动态执行计算表达式利器 -- ScriptEngine


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
解决 Apache Struts S2-059 Struts 远程代码执行漏洞 问题
For循环执行顺序流程
机械动态图 之 牛头刨床执行机构
使用SAP C4C rule editor动态控制UI上某个按钮是否显示
流通盘小于8亿,如何用表达式表达?
C4D表达式学习
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服