在 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/