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。这在技术上可行吗?
util
ScriptEngine
对于界面…
package foo; public interface Iface { String X = "Hello, World!"; void invoke(); }
…静态成员¹ X可以通过两种方式访问。
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在接口上。
public static final