2

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. これは技術的に可能ですか?

4

1 に答える 1

1

インターフェイスに...

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

...静的メンバー¹Xには 2 つの方法でアクセスできます。

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にインターフェース上にあります。

于 2013-05-16T08:37:44.560 に答える