import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;/** * ScriptEngine案例(java6的新特性) * java和js交互 * @author rhy * @2017-3-29 上午9:52:43 * @version v1.0 */public class ScriptEngineTest {public static void main(String[] args) throws Exception {ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine engine = sem.getEngineByName("javascript");engine.put("msg", "Just is test");String str = "msg += '!!!';var user = {name:'tom',age:23,hobbies:['football','basketball']};var name = user.name;var hb = user.hobbies[1]";engine.eval(str);String msg = (String) engine.get("msg");String name = (String)engine.get("name");String hb = (String)engine.get("hb");System.out.println(msg);System.out.println(name +"===="+ hb);engine.eval("function add(a,b){c = a + b; return c;}");Invocable invocable = (Invocable)engine;Object object = invocable.invokeFunction("add", new Object[]{1,2});System.out.println(object);Adder adder = invocable.getInterface(Adder.class);int result = adder.add(3, 4);System.out.println(result);engine.eval("function run(){print('www.java2s.com');}");Invocable invo =(Invocable)engine;Runnable runnable = invo.getInterface(Runnable.class);Thread t = new Thread(runnable);t.start();t.join();}public interface Adder{int add(int a,int b);}}
ScriptEngine案例
最新推荐文章于 2024-08-04 15:17:15 发布