我知道我可以通过 Java.extend 扩展抽象类和接口(interface),但是如何在类中添加自定义方法、构造函数和字段?我试图喜欢这个,但它不起作用:
var MyClass = Java.extend(java.lang.Object, {
myField1: java.lang.String,
myField2: java.lang.Object,
"<init>": function(arg1, arg2) {
// Try to declare constructor
},
myMethod: function(arg1, arg2, arg3) {
// Try to declare method
}
});
最佳答案
正如 A. Sundararajan 正确指出的那样,您无法向扩展类添加新功能。但为什么?
我怀疑这是因为 Nashorn 实现使用 Java.extend() 创建的类的方式。如果您在脚本末尾添加语句 print(MyClass.class) ,您可以看到类的类型是“jdk.nashorn.javaadapters.java.lang.Object”,一个在 Nashorn 中定义的类,并且不太可能指定您在定义扩展类时添加的相同自定义。
因此(大概)在运行时,您添加的任何自定义(不包括覆盖)都不会被 Nashorn 所知。 Nashorn 文档暗示了这一限制,但据我所知并没有明确说明。请参阅this相关的 Stack Overflow 问题以获取更多信息。
关于java - 如何在 Java Nashorn 中声明类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29235386/