今天群里聊天,有人提出了一个很有意思的问题:
我想的是,我传入一个字符串,这个字符串就是if的逻辑条件,怎么把这个字符串转为一个if的逻辑条件
这个让人第一个想到的就是JS里面的Eval了,作为动态语言JS的eval()
函数会将传入的字符串当做 JavaScript 代码进行执行。
那么Java有没有这样的Eval()函数呢?
Java作为强类型的静态语言,应该是没有这玩意的。但是Java6开始,Java有了个Mustang 的脚本引擎,这一套 API 提供了在 Java 程序中调用各种脚本语言引擎的接口。
关于Mustang 的脚本引擎,详细文档看这里:
因此,我们只要调用JavaScript的Eval()即可。
代码如下:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
* @author DXG
* @Date: 2019/10/31 15:11:05
*/
public class test {
public static void main(String[] args) {
test("1>2");
test("1==2");
test("1<2");
test("(1+1+1)>2");
}
private static void test(String pm1) {
// 实例化一个工厂
ScriptEngineManager manager = new ScriptEngineManager();
// 查找可用的脚本引擎
ScriptEngine engine = manager.getEngineByName("js");
try {
System.out.println(engine.eval(pm1));
} catch (ScriptException e) {
e.printStackTrace();
}
}
}