java - 如何为多个观察者实现不同的行为?
问题描述
我需要为io.reactivex.Observer@Override onNext()
类的方法赋予观察者期望观察的两种元素的不同行为,即类和.B
C
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
public class A implements Observer<B>, Observer<C> {
}
在执行 Android Studio 方法的实现时,它显示 onNext() 为:onNext(t:T):void
但是当方法被实现时,方法是onNext(B b){}
.
然后显示以下错误:
重复类:'io.reactivex.Observer'
此外,如果我使用自定义观察者创建接口以隐式实现行为,我仍然会得到相同的错误但更具描述性:
public interface InterfaceB extends Observer<B> {}
public interface InterfaceC extends Observer<C> {}
public class A implements InterfaceB, InterfaceC {}
'io.reactivex.Observer' 不能用不同的类型参数继承:'B' 和 'C'。
解决方案
如何创建C
既实现接口A
又B
实现C
接口并创建一个作为接口观察者的类的C
接口?
public class A implements C {}
public class B implements C {}
public class D implements Observer<C> {
@Override
public onNext(C next) {
if (c instanceof A) {
// ... do whatever you want to do with A instance
} else if (c instanceof B) {
// ... do whatever you want to do with B instance
}
}
}
推荐阅读
- amazon-web-services - 共享 ALB 后面的两个应用程序 EBS 之间的 AWS 通信
- asp.net - 为多个 .net 核心项目提供相同的服务器、子域
- python - python中的进度条
- c++ - NCurses 方法可以毫不拖延地区分 ESC 和功能键
- c - 从文本文件中打印冒泡排序列表
- r - 发现 2 个范围及其重叠区域长度之间的重叠?
- android - 清除深层链接反应原生
- javascript - 为什么当另一个 div 聚焦时这个 div 没有出现?
- reactjs - ReferenceError:使用以前版本的 jest 后未定义 TextEncoder
- ethereum - 我的 geth 节点卡在“寻找对等点”