输出中列出三个重载方法。第一个为无参函数,第二与第三个对应的参数分别为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互操作相关推荐

  1. java rhino 运行 js_使用Rhino在Java中调用Javascript脚本

    转自:http://www.iteye.com/topic/87423 前段时间,在浏览javaeye论坛,看见有人征集如何在java中运行数学表达式. 结果方案五花八门: 1.jakarta com ...

  2. 实训9.2. JDK——java语言的软件开发工具包(JAVA的运行环境(JVM+Java系统类库)和JAVA工具) 【java开发的核心】...

    一.概念 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工 ...

  3. java里面运行js_在java中利用rhino执行javascript

    以rhino中执行QQ邮箱的safeauth.js为例 js代码地址:http://res.qqmail.com/zh_CN/htmledition20091127/js/safeauth.js (1 ...

  4. java程序运行结果题_(Java程序设计)试题

    装 订 线 内 不 答 题 要 二.多选题 (每题2分,共10分) . A.Java 语言是面向对象的.解释执行的网络编程语言. B.Java 语言具有可移植性,是与平台无关的编程语言. C.Java ...

  5. 树莓派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 ...

  6. java后台运行命令,停止java后端运行

    jar包启动后台运行命令: nohup java -jar oaker-admin-web.jar & > msg.log nohup启动会快一些,效率高一些,比较推荐,然后&符 ...

  7. java程序运行结果填空题,Java复习题(二)填空题(附答案)

    Java复习题(二)填空题(附答案) <JAVA程序设计>复习题之(二)填空题 1. Java是目前最广泛的__________编程语言之一. 2. Java具有简单.__________ ...

  8. 没有体现JAVA接口功能_深入浅出分析Java抽象类和接口【功能,定义,用法,区别】...

    本文实例讲述了Java抽象类和接口.分享给大家供大家参考,具体如下: 对于OOP编程来说,抽象是它一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:抽象类和接口. 这两者有相似之处也有很 ...

  9. java python 运行 内存_Python C Java中字符串在内存中的存储

    Python 昨天在讲Python的过程中,发现了一个小问题,当时课上没有解决,下面特意查阅资料解决了一下. a = "123" b = "123" print ...

  10. linux钟java运行命令,在java中运行linux命令

    我想在java中运行"ls"命令,我的代码是- 注意: - 我正在使用WINDOWS.在java中运行linux命令 import java.io.IOException; pub ...

最新文章

  1. 1086: [SCOI2005]王室联邦
  2. 炒股应只做确定的上涨
  3. DI使用value属性与value标签的区别以及xml预定义实体引用
  4. NYOJ -11--奇偶数分离
  5. [2014]兄弟连高洛峰 php教程5.5.1,2014PHP兄弟连全套教程
  6. 无线传感器网络(一)基于无锚节点的WSN系统设计
  7. 线性动力学问题(二)
  8. 病房管理系统c语言设计,病房呼叫系统设计与仿真
  9. 手机怎么断开电脑微信连接服务器,微信如何用手机退出电脑登录不了怎么办
  10. 80后小学计算机课上的游戏,80后最值得回味的经典课间游戏
  11. Python:WIN10解决matplotlib画图中显示中文宋体英文TimesNewRoman问题
  12. tinyproxy王卡免流配置_【免流教程】王卡动态tiny免流教程
  13. Python基础——类属性、类方法、异常
  14. 赛桨PaddleScience v1.0 Beta:基于飞桨核心框架的科学计算通用求解器
  15. grub2命令 linux启动盘,Grub2 制作多系统U盘启动
  16. IOC-IOC的简单介绍
  17. POSIX thread
  18. puzzle(0814)Infinity Loop、拼接回路路径
  19. UVA1428 Ping pong
  20. 宝马自动驾驶战略 - 深度学习的部署【附PDF原版英文资料下载】

热门文章

  1. 华南理工大学计算机科学与工程学院篡改,疑篡改研究生复试成绩!华工四人被停职接受调查...
  2. 建筑企业并购:人才整合的三大误区
  3. 计算机知识大赛五书,2017昆山千灯镇事业单位考试常识——昆山市情解析
  4. 联想笔记本电脑开机无法修复计算机,联想笔记本开机没反应怎么办 笔记本无法开机的解决方法...
  5. Unity发布VR项目不能唤起VR头盔
  6. 系统盘修复计算机命令,U盘启动盘修复系统的详细步骤
  7. 业务架构是战略,应用架构是战术,技术架构是装备
  8. 电驴使用经验谈(转)
  9. Selenium||解决给元素输入文本失败问题
  10. Reflex仓库管理系统(WMS)简介