java rhino 运行 js_深入浅出Rhino:Java与JS互操作
输出中列出三个重载方法。第一个为无参函数,第二与第三个对应的参数分别为FilenameFilter与FileFilter。
另一个比较有意思的特点是通过构造for..in,查看对象对应的所有方法与变量。如下:
js>for (i in f) { print(i) }
exists
parentFile
mkdir
toString
wait
[44 others]
这里列出的方法一部分来自于父类,比如wait来自父类java.lang.Object。
对于JavaBean,Rhino也提供按名字访问的简单方式。比如,通过下面这种方式,我们就可以调用File对象的getName与isDirectory方法:
js>f.name
test.txt
js>f.directory
false
3、Rhino如何实现Java接口
JavaScript当中,方法本身就是对象。下面我们通过JavaScript语法{propertyName: value}声明一个JavaScript方法,并调用该方法如下:
js>obj= { run: function () { print("\nrunning"); } }
[object Object]
js>obj.run()
running
现在我们构造一个JavaScript对象,实现Runnable接口。并将该对象作为参数,构造一个新的线程,并启动该线程。
js>r=newjava.lang.Runnable(obj);
adapter1@291aff
js>t=newjava.lang.Thread(r)
Thread[Thread-0,5,main]
js>t.start()
js>
running
最后的js>提示符与新线程的打印输出running的先后顺序是随机的,取决于线程的调度策略。
从后端的处理流程来讲,Rhino首先为Runnable接口的实现类生成Java字节码文件。然后调用JavaScript对象定义的Run方法。
4、Rhino如何创建Java 数组
Rhino使用Java的发射机制生成数组。下面是生成2个String对象的代码:
js>array=java.lang.reflect.Array.newInstance(java.lang.String, 2);
[Ljava.lang.String;@a20892
js>array[0] = "Double"
Double
js>array[1] = "Life"
Life
js>array[0] + array[1]
DoubleLife
js>
5、Rhino如何捕获与处理异常
与Java类似,Rhino使用try...catch关键字处理异常。
js>function classForName(name) {
try {
return java.lang.Class.forName(name);
} catch (e if e.javaException instanceof java.lang.ClassNotFoundException) {
print("Class " + name + " not found");
} catch (e if e.javaException instanceof java.lang.NullPointerException) {
print("Class name is null");
}
}>>>>>>>>
js>classForName("NonExistingClass");
Class NonExistingClass not found
js>classForName(null);
Class name is null
java rhino 运行 js_深入浅出Rhino:Java与JS互操作相关推荐
- java rhino 运行 js_使用Rhino在Java中调用Javascript脚本
转自:http://www.iteye.com/topic/87423 前段时间,在浏览javaeye论坛,看见有人征集如何在java中运行数学表达式. 结果方案五花八门: 1.jakarta com ...
- 实训9.2. JDK——java语言的软件开发工具包(JAVA的运行环境(JVM+Java系统类库)和JAVA工具) 【java开发的核心】...
一.概念 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工 ...
- java里面运行js_在java中利用rhino执行javascript
以rhino中执行QQ邮箱的safeauth.js为例 js代码地址:http://res.qqmail.com/zh_CN/htmledition20091127/js/safeauth.js (1 ...
- java程序运行结果题_(Java程序设计)试题
装 订 线 内 不 答 题 要 二.多选题 (每题2分,共10分) . A.Java 语言是面向对象的.解释执行的网络编程语言. B.Java 语言具有可移植性,是与平台无关的编程语言. C.Java ...
- 树莓派Java程序运行_树莓派上Java程序作为linux服务并开机自动启动
http://www.iigrowing.cn/shu_mei_pai_shang_java_cheng_xu_zuo_wei_linux_fu_wu_bing_kai_ji_zi_dong_qi_d ...
- java后台运行命令,停止java后端运行
jar包启动后台运行命令: nohup java -jar oaker-admin-web.jar & > msg.log nohup启动会快一些,效率高一些,比较推荐,然后&符 ...
- java程序运行结果填空题,Java复习题(二)填空题(附答案)
Java复习题(二)填空题(附答案) <JAVA程序设计>复习题之(二)填空题 1. Java是目前最广泛的__________编程语言之一. 2. Java具有简单.__________ ...
- 没有体现JAVA接口功能_深入浅出分析Java抽象类和接口【功能,定义,用法,区别】...
本文实例讲述了Java抽象类和接口.分享给大家供大家参考,具体如下: 对于OOP编程来说,抽象是它一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:抽象类和接口. 这两者有相似之处也有很 ...
- java python 运行 内存_Python C Java中字符串在内存中的存储
Python 昨天在讲Python的过程中,发现了一个小问题,当时课上没有解决,下面特意查阅资料解决了一下. a = "123" b = "123" print ...
- linux钟java运行命令,在java中运行linux命令
我想在java中运行"ls"命令,我的代码是- 注意: - 我正在使用WINDOWS.在java中运行linux命令 import java.io.IOException; pub ...
最新文章
- Python实现文本自动分类(朴素贝叶斯方法)
- 关于现代房地产很形象的一个比喻
- 另一种绕过 Android P以上非公开API限制的办法
- js bom and dom
- MYSQL多线程插入操作
- shell习题第22题:
- 【算法导论】贪心算法,递归算法,动态规划算法总结
- C# 创建Excel并写入内容
- 背景图片的位置(HTML、CSS)
- 问题五十:怎么用ray tracing画blobs
- 构建Flex应用的10大误区
- 卡西欧手机计算机软件,卡西欧5800计算器手机版app
- win10显示隐藏文件_u盘内隐藏文件怎么显示 u盘内隐藏文件显示方法【详细步骤】...
- [学渣版]英语四、六级救急小套路总结
- 什么是火起来的“宅经济”,重庆阿尔克互联网技能帮扶学习,进入互联网
- 如何在Genymotion虚拟设备上安装Google框架(Play,Accounts等)? [重复]
- 怎样读懂计算机论文算法,最新计算机算法分析论文参考文献 计算机算法分析专著类参考文献有哪些...
- 服务器一直即将注销你的登录,win10系统提示即将注销你的登录如何解决
- Windows 平台部署前后端分离项目
- 二十五条哈佛励志金句