[英]Conflict when implementing callback interfaces from multiple classes that inherit from same superclass
I have a superclass with some generic behavior for downloading stuff called MySuperclass
. 我有一个具有某些一般行为的超类,用于下载名为MySuperclass
东西。 This class has a callback interface for further use of the payload. 此类具有用于进一步使用有效载荷的回调接口。
public class MySuperclass {
public interface MyDownloadListener{
void onDownload(Object payload);
}
private MyDownloadListener listener;
...
public void download(){
...
listener.onDownloaded(response);
}
}
I derive multiple classes from MySuperclass
, here called MySubclassA
and MySubclassB
. 我从MySuperclass
派生了多个类,这里称为MySubclassA
和MySubclassB
。
public class MySubclassA extends MySuperclass{
...
}
public class MySubclassB extends MySuperclass{
...
}
The conflict occurs when I try to use both subclasses in a third class. 当我尝试在第三类中使用两个子类时,就会发生冲突。 I would have to do something like 我将不得不做类似的事情
public class MyClass implements MySubclassA.MyDownloadListener, MySubclassB.MyDownloadListener{
...
public void onDownloaded(Object payload){
// here is the conflict
}
}
but this doesn't work because I can't distinguish between the two different callback interfaces. 但这是行不通的,因为我无法区分两个不同的回调接口。 How can I solve this? 我该如何解决?
The quickest solution: Provide a sender object which calls your callback interface: 最快的解决方案:提供一个调用您的回调接口的sender对象:
public interface MyDownloadListener{
void onDownload(Object payload, Object sender);
}
In your super class: 在您的超级班上:
public class MySuperclass {
...
public void download(){
listener.onDownload(response, this);
}
}
In your listener object: 在您的侦听器对象中:
public class MyClass implements MySubclassA.MyDownloadListener, MySubclassB.MyDownloadListener{
...
public void onDownload(Object payload, Object sender){
if(sender instanceof MySubclassA){
...
}
if(sender instanceof MySubclassB){
...
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.