Java 执行String语句(Java调用脚本语言)

mac2024-05-18  34

今天群里聊天,有人提出了一个很有意思的问题:

我想的是,我传入一个字符串,这个字符串就是if的逻辑条件,怎么把这个字符串转为一个if的逻辑条件

这个让人第一个想到的就是JS里面的Eval了,作为动态语言JS的eval() 函数会将传入的字符串当做 JavaScript 代码进行执行。

那么Java有没有这样的Eval()函数呢?

Java作为强类型的静态语言,应该是没有这玩意的。但是Java6开始,Java有了个Mustang 的脚本引擎,这一套 API 提供了在 Java 程序中调用各种脚本语言引擎的接口。

关于Mustang 的脚本引擎,详细文档看这里:

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(); } } }

 

 

 

最新回复(0)