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/