输出中列出三个重载方法。第一个为无参函数,第二与第三个对应的参数分别为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. Python实现文本自动分类(朴素贝叶斯方法)
  2. 关于现代房地产很形象的一个比喻
  3. 另一种绕过 Android P以上非公开API限制的办法
  4. js bom and dom
  5. MYSQL多线程插入操作
  6. shell习题第22题:
  7. 【算法导论】贪心算法,递归算法,动态规划算法总结
  8. C# 创建Excel并写入内容
  9. 背景图片的位置(HTML、CSS)
  10. 问题五十:怎么用ray tracing画blobs
  11. 构建Flex应用的10大误区
  12. 卡西欧手机计算机软件,卡西欧5800计算器手机版app
  13. win10显示隐藏文件_u盘内隐藏文件怎么显示 u盘内隐藏文件显示方法【详细步骤】...
  14. [学渣版]英语四、六级救急小套路总结
  15. 什么是火起来的“宅经济”,重庆阿尔克互联网技能帮扶学习,进入互联网
  16. 如何在Genymotion虚拟设备上安装Google框架(Play,Accounts等)? [重复]
  17. 怎样读懂计算机论文算法,最新计算机算法分析论文参考文献 计算机算法分析专著类参考文献有哪些...
  18. 服务器一直即将注销你的登录,win10系统提示即将注销你的登录如何解决
  19. Windows 平台部署前后端分离项目
  20. 二十五条哈佛励志金句

热门文章

  1. 算法基础知识——贪心策略
  2. HDUOJ---汉洛塔IX
  3. 汉洛塔问题(c解决)
  4. USB转串口电路之CH340G
  5. Java生成无限制带参小程序码
  6. 计算机应用程序没声音,电脑突然没声音,多半是这三个原因导致的-维修经验...
  7. 【功能上新】Python实现OSM地图数据解析——OSM2Rail
  8. Power BI----综合应用
  9. C#编程:常用数学函数
  10. 密钥创建ssh-keygen