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でそれを行う方法はありますか?