首页 > 解决方案 > 如何为多个观察者实现不同的行为?

问题描述

我需要为io.reactivex.Observer@Override onNext()类的方法赋予观察者期望观察的两种元素的不同行为,即类和.BC

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'。

标签: javaandroidgenericsinterfacerx-java

解决方案


如何创建C既实现接口AB实现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
     }
  }
}

推荐阅读