栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从Nashorn引擎中删除Java API?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从Nashorn引擎中删除Java API?

好的,这是带有一些限制参数的示例类:

package com.pasuna;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Random;import javax.script.Invocable;import javax.script.scriptEngine;import javax.script.scriptException;import jdk.nashorn.api.scripting.NashornscriptEngineFactory;public class scriptTest {    public static class Logger {        public void log(String message) { System.out.println(message);        }    }    public static class Dice {        private Random random = new Random();        public int D6() { return random.nextInt(6) + 1;        }    }    public static void main(String[] args) {        NashornscriptEngineFactory factory = new NashornscriptEngineFactory();        scriptEngine engine = factory.getscriptEngine(new String[]{"-strict", "--no-java", "--no-syntax-extensions"});        //note final, does not work.        final Dice dice = new Dice();        final Logger logger = new Logger();        engine.put("dice", dice);        engine.put("log", logger);        engine.put("hello", "world");        try { engine.eval("log.log(hello);"); engine.eval("log.log(Object.keys(this));"); engine.eval("log.log(dice.D6());"         + "log.log(dice.D6());"         + "log.log(dice.D6());"); engine.eval("log.log(Object.keys(this));"); engine.eval("Coffee"); //boom as should engine.eval("Java"); //erm? shoud boom? engine.eval("log = 1;"); //override final, boom, nope engine.eval("log.log(hello);"); //boom        } catch (final scriptException ex) { ex.printStackTrace();        }        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        String input = "";        do { try {     input = br.readLine();     engine.eval(input); } catch (final scriptException | IOException se) {     se.printStackTrace(); }        } while (!input.trim().equals("quit"));        try { engine.eval("var add = function(first, second){return first + second;};"); Invocable invocable = (Invocable) engine; Object result = invocable.invokeFunction("add", 1, 2); System.out.println(result);        } catch (final NoSuchMethodException | scriptException se) { se.printStackTrace();        }        Object l = engine.get("log");        System.out.println(l == logger);    }}

有关标志的更多信息,可以在这里找到:http
:
//hg.openjdk.java.net/jdk8/jdk8/nashorn/rev/eb7b8340ce3a

(nashorn文档的imho atm很差)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号