RxJava:使用onType()时如何回避不支持的Observable?

时间:2017-04-18 13:12:14

标签: rx-java2

说我有

sudo service apache2 start

如果// Function<? super Observable<T>, ? extends ObservableSource<R>> selector source -> Observable.merge( source.ofType(A.class).compose(transformerA), source.ofType(B.class).compose(transformerB) ); 恰好既不属于source也不属于A,是否有一种聪明的方法可以抛出错误,因此我可以检测到缺少的实现?

1 个答案:

答案 0 :(得分:1)

如果源值既不是类型也不是flat将未知元素映射到错误中,则进行过滤器传递:

source -> Observable.merge(
    source.ofType(A.class).compose(transformerA),
    source.ofType(B.class).compose(transformerB),
    source.filter(v -> !(v instanceof A) && !(v instanceof B))
        .flatMap(w -> 
            Observable.error(new IllegalArgumentException("Unknown type: " + w)) 
);

是的,如果有一个类型C获得处理程序,则必须扩展该模式。