【问题标题】:Rhino: Access Java interface variables in Javascript implementationRhino:在 Javascript 实现中访问 Java 接口变量
【发布时间】:2013-05-10 22:00:44
【问题描述】:

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

我为其他方公开了一个 java 接口,让他们在 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.. 
  }    

}

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

【问题讨论】:

    标签: java javascript interface rhino


    【解决方案1】:

    对于界面...

    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 上测试。

    ¹所有变量都隐含在接口上的public static final

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 2014-03-13
      • 2023-03-10
      • 2016-01-20
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      相关资源
      最近更新 更多