Java自定义事件处理程序和侦听器

时间:2015-11-27 00:49:27

标签: java events socket.io netty listeners

我目前正在使用Socket.io的Java实现,可在此处获取:netty-socketio

我已经启动并运行了服务器,它在客户端和服务器之间很好地接收/发送消息,但是我需要在接收到某些消息时触发事件,这就是我感到困惑的地方。

这是我的代码:

Observable

}

基本上我想要发生的是当从客户端收到特定消息时,我需要在另一个类中运行一个函数。我花了最近两个小时阅读ObserverInterfacesDataListener和事件处理程序,但我真的不确定如何设置它。

图书馆也提到了这个{{1}},但我不知道那是什么,因为图书馆里的文档很少。

对此的任何意见或建议将不胜感激。

由于

1 个答案:

答案 0 :(得分:30)

让我们说你举起这个事件的班级被称为A。需要监听事件的类称为B。该活动名为SomeEvent

首先,创建一个名为SomeEventListener的接口:

public interface SomeEventListener {
    void onSomeEvent ();
}

如果在事件发生时您想要传递参数(通常是关于事件的信息),您可以将其添加到方法中。

然后在A中添加一个字段:

private SomeEventListener listener;

和方法:

public void setSomeEventListener (SomeEventListener listener) {
    this.listener = listener;
}

这样,B可以调用setSomeEventListener来设置监听器。

事件发生时,A应致电

if (listener != null) listener.onSomeEvent ();

那就是A

B中,您需要实现界面:

public class B implements SomeEventListener {
    public void onSomeEvent () {
        //do whatever you like when SomeEvent happens.
    }
}

你可以这样听SomeEvent

someInstanceOfA.setSomeEventListener (this);

在此次通话后,SomeEvent可以收听A提出的所有B

使用Observable和Observer模式,我们可以看到A是一个Observable,B是一个观察者。

这很简单!