如何为多个观察者实现不同的行为?

时间:2019-05-22 19:03:49

标签: java android generics interface rx-java

对于观察者希望观察的2种元素,我需要对 io.reactivex.Observer 类的方法@Override onNext()赋予不同的行为,即{{1 }}和B

C

执行Android Studio方法的实现时,onNext()显示为:import io.reactivex.Observer; import io.reactivex.disposables.Disposable; public class A implements Observer<B>, Observer<C> { }

enter image description here

但是当实现方法时,方法是onNext(t:T):void

然后显示以下错误:

  

重复的类:“ io.reactivex.Observer”

此外,如果我使用自定义观察者创建接口以隐式实现行为,我仍然会遇到相同的错误,但更具描述性:

onNext(B b){}
  

'io.reactivex.Observer'不能使用不同的类型参数'B'和'C'继承。

1 个答案:

答案 0 :(得分:2)

如何创建CA都实现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
     }
  }
}