博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6.游戏特别离不开脚本(3)-JS脚本操作java(直接解析JS公式,并非完整JS文件或者函数)...
阅读量:5064 次
发布时间:2019-06-12

本文共 2849 字,大约阅读时间需要 9 分钟。

engine.put("usList", us);

engine.put("obj", new JSModifiedJava()) ; 

取个变量名就put进去

import java.util.ArrayList;  import java.util.List;    import javax.script.ScriptEngine;  import javax.script.ScriptEngineManager;  import javax.script.ScriptException;      public class JSModifiedJava {            public void sayHello(String name){          System.out.println("*************Hello***************"+name);      }             public static void main(String[] args) {            //创建 List对象,并添加3个原用户          List
us = new ArrayList
(); us.add("JLee 1"); us.add("JLee 2"); //获得JS引擎 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByExtension("js"); String script = ""; //把List对象加入JS引擎 engine.put("usList", us); {
//用JS输出java对象的数据 System.out.println("用JS输出java对象的数据"); script = "var index; " + "var usname = usList.toArray(); " + "for (index in usname) { " + "println('原用户='+usname[index]); " + "}"; //执行脚本 try { engine.eval(script);// 通过引擎调用getScript() } catch (ScriptException e) { e.printStackTrace(); } } {
//JS可以对对象进行修改在,java代码可以得到修改后的 System.out.println("JS可以对对象进行修改在,java代码可以得到修改后的"); script = "usList.add(\"JLee 3\"); " + "usList.add(\"JLee 4\"); "; //执行脚本 try { engine.eval(script);// 通过引擎调用getScript() } catch (ScriptException e) { e.printStackTrace(); } //java代码显示被JS修改后所有用户 for (String usname : us) { System.out.println("所有用户 = " + usname); } } //将要操作的对象加入引擎 engine.put("obj", new JSModifiedJava()) ; {
//在JS中甚至可以调用对象的方法 System.out.println("在JS中甚至可以调用对象的方法"); script = "obj.sayHello('JLee')" ; //执行脚本 try { engine.eval(script);// 通过引擎调用getScript() } catch (ScriptException e) { e.printStackTrace(); } } // //根据JavaScript名获取一个脚本引擎实例 // ScriptEngine engine2 = manager.getEngineByName("JavaScript"); // try { // engine2.eval("print('Hello JLee ...')"); // } catch (ScriptException e) { // e.printStackTrace(); // } } }

执行结果

用JS输出java对象的数据原用户=JLee 1原用户=JLee 2JS可以对对象进行修改在,java代码可以得到修改后的所有用户 = JLee 1所有用户 = JLee 2所有用户 = JLee 3所有用户 = JLee 4在JS中甚至可以调用对象的方法*************Hello***************JLee

 

转载于:https://www.cnblogs.com/booke/p/3198124.html

你可能感兴趣的文章
第三节
查看>>
PHP结合MYSQL记录结果分页呈现(比较实用)
查看>>
Mysql支持的数据类型
查看>>
openSuse beginner
查看>>
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
Windows7中双击py文件运行程序
查看>>
Market entry case
查看>>
css3动画属性
查看>>
Mongodb 基本命令
查看>>
控制文件的备份与恢复
查看>>
PHP的SQL注入技术实现以及预防措施
查看>>
软件目录结构规范
查看>>
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
Eclipse 调试的时候Tomcat报错启动不了
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
java学习笔记之String类
查看>>