目前我遇到了以下问题:我们在项目中使用了一些第三方库,并且有一个模型支持添加和删除(不获取!)某些类型的侦听器。问题是添加侦听器然后将其删除到其他地方,我们没有它的实例。解决方案之一是:制作它singleton
以便您可以添加它并删除相同的实例(但这很难看,恕我直言)。第二个如下:
class MyListener implements CoolThirdPartyModelListener{
...
@Override
public boolean equals(Object obj){
if (obj == null){
return false;
}
if(obj == this){
return true;
}
return obj instanceof MyListener;
}
}
并通过调用将其从侦听器列表中删除:
coolThirdPartyModelInstance.removeListener(new MyListener());
但是第二个有丑陋的equals()
方法:(我被告知以这种方式删除听众有点棘手。
所以我想问问你对这两个变体的看法,也许(那太棒了)你可以建议一些比我发现的更酷的东西。