今天快在公司实习了一个月,看到公司大神们测试代码的时候都不是用我们平常用的System.out去输出,而是使用了仿效javascript解析的方法去实现,于是就使用了一下,觉得就像是操作javascript一样,于是在这里跟大家一起操作,希望喜欢或者习惯使用javascript的同学们也可以使用这中方法去进行仿照javascript的操作:
package test;
import java.util.Date;
import bsh.EvalError;
import bsh.Interpreter;
/**
* 在java中利用动态编译实现eval,
*
* 我们知道,
*
* 在很多脚本语言中都有eval函数,
*
* 他可以把字符串转换成为表态式并执行
*
* 也是就通俗意义上把字符串的表达式转换为真正的表达式
*
* @author Retror
*
*/
public class TestBSH {
public void testBsgInterpreter() {
Interpreter interpreter = new Interpreter();
try {
// 1
interpreter.set("add", interpreter.eval("(100+101)"));
System.out.println(interpreter.get("add"));
interpreter.set("boolean", interpreter.eval("100>101"));
System.out.println(interpreter.get("boolean"));
// 2
Interpreter i = new Interpreter();// 创建解析器
i.set("foo", 5);// 设置变量
i.set("date", new Date());
Date date = (Date) i.get("date");// 取回变量
System.out.println(date);
// Eval a statement and get the result
i.eval("bar=foo*10");
System.out.println(i.get("bar"));
} catch (EvalError e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TestBSH test = new TestBSH();
test.testBsgInterpreter();
}
}
代码实现效果: