3

一旦我拥有代表它的 Rhino 对象,如何使用 Rhino ( , not ) 调用以下sum()函数,将 Java 方法作为回调传递给它(或任何其他允许我在 Java 中接收结果的方式) ?org.mozilla.javascriptjavax.scriptFunction

function sum(a, b, successHandler) {
    successHandler(a + b);
}
4

1 回答 1

3

这是我找到的解决方案:

function.call(context, scope, null, new org.mozilla.javascript.Function() {
    @Override
    public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
        System.out.println(args[0]);
    },

    // ...
});

不幸的org.mozilla.javascript.Function是,接口如此之大,但一切似乎都可以正常工作,即使所需的方法都没有真正的实现。

不过,这并不完全优雅。我希望有更好的方法。

于 2012-12-10T23:32:12.727 回答