gpt4 book ai didi

java回调,在接口(interface)实现中取消订阅监听器

转载 作者:行者123 更新时间:2023-11-30 04:45:59 25 4
gpt4 key购买 nike

我想实现如下所示的回调系统(伪代码):

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

此代码意味着收到消息后,我想取消订阅 future 的通知。我发现在回调中执行此操作非常有吸引力。

这是我的实际实现:

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

不幸的是,我当前的实现显示 Eclipse 错误:“局部变量 wml 可能尚未初始化”

问题:我如何解决这个问题,最终在回调内部取消订阅并且不会出现此错误?

最佳答案

将代码更改为:

authDelegate.unsetMsgListener(this);

this 引用当前对象(执行此语句时其 onMsgNotify() 正在执行)。

注意:虽然变量wml可用于新对象,但它在创建对象时尚未初始化,因此会出现错误。它在对象完全创建后立即初始化。

关于java回调,在接口(interface)实现中取消订阅监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936223/

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