java - 如何从 Javascript (Java 1.8) 访问 Java 枚举

标签 java javascript enums applet nashorn

在 Java 1.7 中,在它被删除之前,可以使用“包”以下列方式从浏览器查看的 HTML 页面上的 Javascript 访问 Java 枚举:

var enumvar1 = document.appletid.Packages.com.mycompany.MyClass$MyEnumYesNo.YES
var enumvar2 = document.appletid.Packages.com.mycompany.MyClass$MyEnumYesNo.NO

我正在升级这些 HTML 页面以使用 Java 1.8(现在使用 Nashorn javascript 引擎),但我似乎无法弄清楚如何访问 Enum 成员。

我重写了 Java applet 以将新的 MyClass 对象返回给 javascript 变量,并且我可以从 JavaScript 变量访问 MyClass 中的所有方法和字段,但我无法弄清楚获取枚举。错误的类型为“属性为空/未定义”。我尝试了包名、类名、保存类的变量和小程序 ID 变量的各种组合。

我在谷歌搜索中没有找到任何 Java 1.8 的示例,尽管在阅读 Oracle 的 Nashorn 文档时,它暗示可以访问枚举。

有人可以提供示例语法吗?可能是我忽略的一些简单的事情......

谢谢!

最佳答案

Nashorn 引入了全局函数 Java.type() 来与 Java 类进行交互。 http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/api.html

这里是一个例子,你可以如何使用它

var retPolicy = Java.type("java.lang.annotation.RetentionPolicy");
print(retPolicy.RUNTIME);

此外,如果您正在寻找从 Rhino 迁移到 Nashorn 的方法,请考虑遵循手册 https://wiki.openjdk.java.net/display/Nashorn/Rhino+Migration+Guide

关于java - 如何从 Javascript (Java 1.8) 访问 Java 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28974548/

相关文章:

java - 如何在同一网络服务中获取@PathParam和请求正文?

java - 遇到这个java代码的问题 - 应该打印并计算随机抛硬币中正面和反面的数量

java - 解析门户 URL

javascript - 从 YUI 数据表导出数据

javascript - 如何使用 RequireJS AMD 让函数公开其对象和成员方法

java - 将字符串转换为枚举?

c - Clang、GCC 接受相同功能的不同原型(prototype)

java - 如何在android中实现自定义可折叠工具栏?

javascript - 一组字符串 JavaScript 中最长的公共(public)子字符串

Scala json4s 密封特征作为枚举