次のようなコールバックのシステムを実装したいと思います(擬似コード):
final Listener listener = ListenerCtrl.addListener(new Listener() {
void onNotify(String response){
ListenerCtrl.unsetListener(listener);
} }
このコードは、メッセージを受信した後、将来の通知からスクライブを解除したいことを意味します。コールバック内にこのアクションがあると非常に魅力的であることがわかりました。
これが私の実際の実装です:
final WebServiceMsgListener wml = new WebServiceMsgListener()
{
public void onMsgNotify(JSONObject response, int ecode)
{
Log.v(TAG, "getSetStateProgressBar MSG_MGT_STATICINFO: onMsgNotify ecode" +
ecode);
authDelegate.unsetMsgListener(wml);
}
};
authDelegate.addMsgListener(NAOMsg.MSG_MGT_STATICINFO, wml);
残念ながら、私の現在の実装では、Eclipseエラーが表示されます:「ローカル変数wmlが初期化されていない可能性があります」
質問:これを回避して、最終的にコールバック内のスクライブを解除し、このエラーが発生しないようにするにはどうすればよいですか?