我有一个具有某些一般行为的超类,用于下载名为MySuperclass
的内容。此类具有用于进一步使用有效负载的回调接口。
public class MySuperclass {
public interface MyDownloadListener{
void onDownload(Object payload);
}
private MyDownloadListener listener;
...
public void download(){
...
listener.onDownloaded(response);
}
}
我从
MySuperclass
派生了多个类,这里称为MySubclassA
和MySubclassB
。public class MySubclassA extends MySuperclass{
...
}
public class MySubclassB extends MySuperclass{
...
}
当我尝试在第三类中使用两个子类时,就会发生冲突。我将不得不做类似的事情
public class MyClass implements MySubclassA.MyDownloadListener, MySubclassB.MyDownloadListener{
...
public void onDownloaded(Object payload){
// here is the conflict
}
}
但这是行不通的,因为我无法区分两个不同的回调接口。我该如何解决?
最佳答案
最快的解决方案:提供一个调用您的回调接口的sender对象:
public interface MyDownloadListener{
void onDownload(Object payload, Object sender);
}
在您的超级班上:
public class MySuperclass {
...
public void download(){
listener.onDownload(response, this);
}
}
在您的侦听器对象中:
public class MyClass implements MySubclassA.MyDownloadListener, MySubclassB.MyDownloadListener{
...
public void onDownload(Object payload, Object sender){
if(sender instanceof MySubclassA){
...
}
if(sender instanceof MySubclassB){
...
}
}
}