4

Javaの内部アノンクラスのメソッドに外部ア​​ノンクラス参照を渡す方法は?

サーバーへの非同期呼び出しを行うメソッドがあります - sendCall(some_args, callback)。コールバックは匿名クラス (名前を付けましょうOuterAnon) で表され、失敗した場合のメソッドが含まれています。このメソッド内でメッセージ ボックスが作成され、sendCall()[OK] ボタンが押されるたびに呼び出されます。OuterAnonそのため、メソッドに再度渡す必要があります。

ここに私が何を意味するかを示すコードがあります:

private void sendCall(MyData data, OuterAnon<Boolean> callback){/*...*/}

private void myCall(final MyData data) {
        sendCall(data, new OuterAnon<Boolean>() {
            public void onFailure(Throwable throwable) {
                    final OuterAnon<Boolean> callback = this; //how to avoid this?
                    MessageBox.show(throwable.getMessage(), new MessageListener() {
                        public void process(MessageBox.OnClick action) {
                            if (action == MessageBox.OnClick.OK) {
                                sendCall(new MyData("resend?"), callback);
                            }
                        }
                    });
                }
            }
        });
    }

お気づきのとおり、ここでコールバックの参照を取得します。

final OuterAnon<Boolean> callback = this;

ここで使用します:

sendCall(new MyData("resend?"), callback);

しかし、ref の作成を避けて、次のようなコールバックを渡したい:

sendCall(new MyData("resend?"), this); //at the moment we point to MessageListener instead of OuterAnon.

Javaでそれを行う方法はありますか?

4

2 に答える 2