gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:44:58 25 4
gpt4 key购买 nike

我目前正在研究 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,但我不知道那是什么,因为库中几乎没有文档。

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

最佳答案

假设引发该事件的类名为 A。而需要监听事件的类称为B。该事件称为 SomeEvent

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

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中,您需要实现接口(interface):

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

你可以像这样监听SomeEvent:

someInstanceOfA.setSomeEventListener (this);

在这次调用之后,A引发的所有SomeEvent都可以被B监听!

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

这很简单!

关于Java 自定义事件处理程序和监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33948916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com