3

sum()Rhino ( org.mozilla.javascript, not ) を使用して次の関数を呼び出し、javax.scriptコールバックとして Java メソッドを渡すには (または Java で結果を受け取ることができるその他の方法)、Functionそれを表す Rhino オブジェクトを取得したら、どうすればよいでしょうか?

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 に答える