devolución de llamada de Java, anular la escucha dentro de la implementación de la interfaz

Me gustaría implementar un sistema de devoluciones de llamada que se vea así (pseudocódigo):

final Listener listener = ListenerCtrl.addListener(new Listener() {
  void onNotify(String response){
    ListenerCtrl.unsetListener(listener);
} }

Este código significa que después de recibir el mensaje, quiero cancelar mi suscripción a futuras notificaciones. Me pareció muy atractivo tener esta acción dentro de la devolución de llamada.

Aquí está mi implementación real:

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);

Desafortunadamente, mi implementación actual me muestra un error de eclipse: "La variable local wml puede no haberse inicializado"

Pregunta: ¿cómo puedo evitar esto, para finalmente darme de baja dentro de la devolución de llamada y no tener este error?

Respuesta 1

Simplemente diga, tengo muchos puntos en forma de (x, y). Quiero poner esos puntos en una tabla hash con el punto como clave. ¿Cómo debo implementar el método hashCode () de la clase Point? tomando ...

Tengo una aplicación web que consiste en un servicio web con dos operaciones: createA y createB. Se registra un controlador para el punto final. Este controlador abre una sesión e inicia una transacción cuando ...

Tengo una función de Oracle my_func () que devuelve la tabla de tipo de usuario. Ahora puedo seleccionar de esta manera: SELECCIONAR * DE LA TABLA (my_func (3)); Pero mi proyecto no debería depender de la base de datos, y yo ...

Los ejemplos funcionan mejor, imagine que Object es un Byte e intentamos convertirlo en un largo ... Actualmente, el código de byte se parece un poco a este Byte b = Byte.valueOf (1); Fuente del objeto = b; Largo largo = (...