Java 动态特性三:脚本引擎

2018-03-02  本文已影响0人  真海ice

java脚本引擎介绍:

java脚本引擎有很多,这里以javascript为例。javascript是解释性语言,动态性比较好。

package com.test.script;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * java脚本引擎执行javascript代码
 * @author zhb
 *
 */
public class JavaScript {
    
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        
        // 获取执行javascript代码的脚本的引擎
        ScriptEngineManager sem = new ScriptEngineManager();
        ScriptEngine engine = sem.getEngineByName("JavaScript");
                
        // 定义变量
        engine.put("msg", "你好");
        Object object = engine.get("msg");
        System.out.println(object);
        // 改变变量的值
        engine.eval("msg = 'Hello'");
        System.out.println(engine.get("msg"));
        
        // 定义一个变量 a
        engine.put("a", 3);
        // 定义一个有变量a的公式
        String str = "a*2+3";
        // 执行
        Object result = engine.eval(str);
        System.out.println(result);     
        
        // 定义函数
        String Strfun = "function add(a, b){ var sum = a+b; return sum;}";
        engine.eval(Strfun);
        // 执行js代码
        Invocable invocable = (Invocable)engine;
        Object jsresult = invocable.invokeFunction("add", 4, 7);
        System.out.println(jsresult);               
    }
        
}
上一篇下一篇

猜你喜欢

热点阅读