java - Rhino:在 Javascript 实现中访问 Java 接口(interface)变量

标签 java javascript interface rhino

Rhino:如何在 Javascript 实现中访问 Java 接口(interface)变量?

我为其他方公开了一个 java 接口(interface),让他们在 javascript 中提供相同的实现。

public interface APIInterface{

    public static APIUtils util = new APIUtils();

    public ArrayList getAllObjects(Object aTransaction);
}

Javascript 实现:

/** Core Interface Method **/
new Object() {

  getAllObjects: function(tran) {
        tran.set(..); //OK  
        tran.set(..); //OK
        util.callSomeFunction(); //Fails here..Rhino doesn't understand util.. 
  }    

}

我希望接口(interface)的 javascript 实现能够理解接口(interface)变量 util 而不必将其作为附加参数传递给函数或将其添加到 ScriptEngine .这在技术上可行吗?

最佳答案

对于界面...

package foo;
public interface Iface {
  String X = "Hello, World!";
  void invoke();
}

...静态成员¹ X 可以通过两种方式访问​​。

1) 通过类型:

var x = Packages.foo.Iface.X;

2) 通过反射:

var impl = new Packages.foo.Iface({
  invoke : function () {
    var x = this.getClass().getField("X").get(null);
    java.lang.System.out.println(x);
  }
});
impl.invoke();

在 Rhino 1.7R4 上测试。

¹所有变量在接口(interface)上都是隐式public static final

关于java - Rhino:在 Javascript 实现中访问 Java 接口(interface)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16580164/

相关文章:

java - 我可以记录在第 3 方(外部)库中抛出和捕获的异常吗?

java - 是否可以在保存的密码中创建 Firefox 配置文件和密码?

Java,创建一个对象 vector ,编译后其数组中应有n个零

java - 接口(interface)中的属性/成员变量?

go - 如何在 Go 中复制接口(interface)值?

java - 使用集合处理 Gson 中的类型检查

Java NIO 非阻塞模式 vs node.js 异步操作

javascript - 如何防止 LeafletJS 在重叠标记上发出多个点击事件?

javascript - 使用下拉值更新文本框在 IE 中不起作用 [JavaScript]

javascript - 在表单上传期间禁用按钮?