Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rhino:在Javascript实现中访问Java接口变量_Java_Javascript_Interface_Rhino - Fatal编程技术网

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

Rhino:在Javascript实现中访问Java接口变量,java,javascript,interface,rhino,Java,Javascript,Interface,Rhino,Rhino:如何在Javascript实现中访问Java接口变量 我为另一方公开了一个java接口,让他们在javascript中提供同样的实现 public interface APIInterface{ public static APIUtils util = new APIUtils(); public ArrayList getAllObjects(Object aTransaction); } Javascript实现: /** Core Interface M

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
。这在技术上可行吗

对于接口

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

在接口上,所有变量都隐式地
公共静态final