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

问题描述

假设您引发该事件的班级称为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也是一个Observer。

这很简单!

解决方法

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

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

这是我的代码:

server.addEventListener("message",clientData.class,new DataListener<clientData>() {
        @Override
        public void onData(SocketIOClient client,clientData data,AckRequest ackRequest) throws Exception {
            System.out.println("Message from client: " + data.getMessage());

        }

    });



public class clientData{

String message;

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

}

本质上,我想发生的是从客户端收到特定消息时,我需要另一个类中的函数才能运行。我花了持续两个小时阅读ObservableObserverInterfaces和事件处理程序,但我真的不知道如何处理此问题。

库中也提到了这一点DataListener,但是我不知道那是什么,因为库中几乎没有文档。

任何意见或建议,将不胜感激。

谢谢

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”