说我有
public abstract class Event {}
public final class A extends Event {}
public final class B extends Event {}
public final class C extends Event {}
现在,使用Observable<Event>
,我如何对其进行过滤,以便仅n
- A
以及所有B
和C
的排放量传递到溪流上。
这样的事可能吗?
myObservable.publish(shared ->
Observable.merge(
shared.ofType(A.class).take(n),
shared.notOfType(A.class) // this does not exist
)
)
有解决这个问题的好方法吗?
答案 0 :(得分:1)
只需使用instanceof并反转逻辑
@Test
void name() {
Observable<? extends Event> just = Observable.just(
new A(),
new B(),
new A(),
new B(),
new C(),
new A(),
new C()
);
int n = 2;
Observable<? extends Event> publish = just.publish(shared ->
Observable.merge(
shared.ofType(A.class).take(n),
shared.filter(o -> !(o instanceof A))
)
);
publish.test()
.assertValueCount(6);
}