如何从Javascript(Java 1.8)访问Java Enums

时间:2015-03-10 21:36:58

标签: java javascript enums applet nashorn

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

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

谢谢!

1 个答案:

答案 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