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

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

我想的是,我传入一个字符串,这个字符串就是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();
        }
    }
}

 

 

 

你可能感兴趣的:(API)