Java8新特性(五)Nashorn javascript引擎

作者: 糖宝_ | 来源:发表于2018-05-07 07:40 被阅读0次

     我刚整理了一套2018最新的0基础入门和进阶教程,无私分享,加Java学习裙 :678-241-563 即可获取,内附:开发工具和安装包,以及系统学习路线图

    在Java8之前,如果要调用js语言是用Rhino调用,Java8只会自动升级到Nashorn,下面有一个例子

    //获取脚本引擎的对象ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine engine = sem.getEngineByName("javascript");System.out.println(engine.getClass().getName());//定义变量,存储到引擎的上下文中engine.put("msg","hello world!");String str ="var user = {name:'zs',age:18,schools:['北京大学','清华大学']};";//执行脚本engine.eval(str);engine.eval("msg = 'hi !';");System.out.println(engine.get("msg"));//获取变量engine.eval("var sum = eval('1+222+33*4');");//调用js的eval的方法完成运算System.out.println(engine.get("sum"));//获取变量//定义函数engine.eval("function add(a,b){ return a+b;}");//执行js函数Invocable jsInvoke = (Invocable)engine;Object obj = jsInvoke.invokeFunction("add",1,2);//方法的名字,参数System.out.println(obj);//执行一个js的文件URL resource = Demo1.class.getClassLoader().getResource("a.js");//当前项目的bin目录的a.jsFileReader fr = new FileReader(resource.getPath());engine.eval(fr);//执行js函数Invocable jsInvoke2 = (Invocable)engine;Object obj2 = jsInvoke2.invokeFunction("a",1,2);//方法的名字,参数System.out.println(obj2);

    bin目录a.js内容

    functiona(a,b){varsum= a + b;returnsum;}

    打印输出: 

    jdk.nashorn.api.scripting.NashornScriptEngine 

    hi ! 

    相关文章

      网友评论

        本文标题:Java8新特性(五)Nashorn javascript引擎

        本文链接:https://www.haomeiwen.com/subject/xzzprftx.html