【发布时间】:2023-04-04 17:56:01
【问题描述】:
我正在使用 nashorn 引擎尝试扩展以下 java 类
public abstract class AbstractClass {
protected String name;
protected long id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public void init() {
}
Javascript 代码:在 init() 方法中我想访问超类成员(直接设置受保护字段的值或使用公共设置器)
var extended = Java.extend(AbstractClass.static , {
init: function() {
extended.name = "name"; //name is null
setName("name") //exception <eval>:6 ReferenceError: "setName" is not defined
}
});
在 java 中我创建对象实例并调用 init 方法,但字段“name”为空。
我也尝试过使用 Java.super(extended ).setName("name");但这引发了异常<eval>:7 TypeError: Cannot call undefined
如何从 javascript 和 nashorn 访问超类成员?
【问题讨论】:
标签: java superclass nashorn