是否可以使用回调设置多个侦听器?

我试图了解回调的工作方式,并试图找出这就是我所需要的。

我有一个UDP消息传递类,用于接收/发送消息。当我解析某些消息时,我想更新多个UI类。

目前,我有这样的事情:

class CommInt {

    private OnNotificationEvent notifListener;

    public setNotificationListener(OnNotificationEvent notifListner) {
        /* listener from one UI */
        this.notifListener = notifListener;
    }

    private parseMsg(Message msg) {

        if (msg.getType() == x) {
            notifListener.updateUI();
        }

    }

}

我还需要更新另一个UI。其他UI将使用相同的界面,但主体将有所不同。

如何调用从该接口实现的所有侦听器?

最佳答案

您很有可能需要制作一个侦听器列表,然后遍历每个调用updateUI()的对象。当然,您还需要addListener()方法,以免覆盖。

class CommInt {

  private List <OnNotificationEvent> listeners= new ArrayList <OnNotificationEvent>();


  public void addNotificationListener(OnNotificationEvent notifListner) {
    listeners.add (notifListener);
  }

  private void parseMsg(Message msg) {

    if (msg.getType() == x) {
      for (notifListener : listeners){
        notifListener.updateUI();
      }
    }

  }

}

10-01 13:32