Java智能计算
来源:互联网 发布:淘宝滑动验证码 编辑:程序博客网 时间:2024/05/20 10:13
昨天有位刚入行的java工程师问我有没有什么方法直接执行通过远程调用获取到的公式,我当时脑子里面第一冒出来是js的eval函数,我就告诉他js的eval()可以实现他的需求,当时由于他没怎么接触js,听得一脸懵逼,我这才反应过来他是写java的。由于我的工作中很少遇到这种应用场景,当时我也没想起java里面怎么实现,当时的想法是把那个公式当作一段java代码,然后实时编译、执行;转念又一想,java这么古老强大的语言,这种应用场景肯定早就有很好的原生解决方案了。搜索了一下,找到2种实现方案。1、JDK1.6里面的ScriptEngine;2、JEXL。
下面分别说明一下2种方案的具体使用。
ScriptEngine
JDK1.6引入ScriptEngine,用于执行JavaScript这样的脚本语言,所以js的eval函数当然也可以通过它来执行。
public static void test1(){ String ddd = "10+20"; ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); Object result = null; try { result = engine.eval(ddd); } catch (ScriptException e) { e.printStackTrace(); } System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result); }
JEXL
Java Expression Language (JEXL) 是一个表达式语言引擎,可以用来在应用或者框架中使用。JEXL 受Velocity 和 JSP 标签库 1.1 (JSTL) 的影响而产生的。需要注意的是, JEXL 并不是 JSTL 中的表达式语言的实现。
使用JEXL需要引入对应的jar包。
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-jexl3</artifactId> <version>3.1</version></dependency>
具体使用如下:
public static void test2(){ JexlEngine jexl = new JexlBuilder().create(); String jexlExp = "10+20"; JexlExpression e = jexl.createExpression( jexlExp ); // Create a context and add data JexlContext jc = new MapContext(); //jc.set("foo", new Foo() ); Object result= e.evaluate(jc); System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result); }
原文:http://www.itclj.com/blog/5a011c0281c06e4103ef5126
阅读全文
0 0
- Java智能计算
- 计算的智能,还是智能的计算?
- 计算是智能吗?
- 智能计算综述1
- 智能电网云计算
- 智能计算与计算机网络
- 智能计算初学
- 智能计算期末
- 计算智能---绪论
- 智能计算术语: metaheuristic
- 智能计算术语积累
- 智能计算简介
- 网络计算智能研究方向
- 模式识别与智能计算随记
- String如何智能计算长度
- 利用高级Java、算法、三角学、分布计算设计自己的智能
- 利用高级Java、算法、三角学、分布计算设计自己的智能机器人--(重锤痛击续2)
- 云计算带来商业智能野心加剧
- 如何在 Kaggle 首战中进入前 10%
- error: expected ';', ',' or ')' before '&' token 解决方法
- JavaWeb路径问题
- vue2.0音乐app项目笔记
- 小白算法练习 树状dp POJ anniversary party
- Java智能计算
- shadertoy上手指南
- 形形色色的线段树练习——codevs线段树练习1-5:线段树,树状数组及分块模板
- struts2拦截器的实现原理及源码解析
- 【第三周】项目1-顺序表的基本运算
- MnistData的读取
- 考试总结1
- 游戏中纹理压缩格式之Texture压缩纹理特殊处理
- 大话数据结构之AVL树