在Java 1.7中,在删除之前,可以使用' Packages'通过以下方式从浏览浏览器的HTML页面上的Javascript访问Java Enums:
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中的所有方法和字段,但我无法弄清楚语法得到Enums。错误属于"属性为null / undefined"。我已经尝试了包名,类名,持有类的变量和applet ID变量的各种组合。
我还没有在Google上搜索Java 1.8的任何示例,尽管在阅读Oracle的Nashorn文档时,它意味着可以访问Enums。
有人可以提供示例语法吗?可能是我只是忽略的简单......
谢谢!
答案 0 :(得分:4)
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