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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值