您的位置:首页 > 编程语言 > Java开发

Java中利用Interpreter动态编译实现eval

2016-05-03 15:49 591 查看
Java中利用Interpreter动态编译实现eval

在很多脚本语言中都有eval函数,它可以把字符串转换成表达式并执行。

如在javascript中:

var str = “1+1*3+5”;

alert(eval(str));

则会弹框输出 9

那么在java中,如何实现这个功能呢?其实我们可以用动态编译来实现:

首先要到http://www.beanshell.org/download.html

官网去下载BeanShell的一个jar包,如bsh-2.0b4.jar,然后在项目中引入。

测试代码如下:

package InterpreterTest;

import bsh.Interpreter;

public class TestEval {
public static void main(String[] args) throws Exception {
Interpreter in = new Interpreter();
in.eval("for(int i=0; i<3; i++) { System.out.println(\"hello\"); }");

String s = "2>3||3>4&&5<4";
in.set("boolean", in.eval("(" + s +")"));
System.out.println(in.get("boolean"));

}
}
输出结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: