假设我有一些订阅者实现:
// SafeSubscriber extension doesn't matter here - the problem exists for simple Subscriber implementations too
class ParticularSubscriber<T> extends SafeSubscriber<T> {
private Subscriber<T> actual;
public ParticularSubscriber() {
super(Subscribers.create(System.out::println));
}
}
然后,我需要创建一个观察者,根据传递的订阅者执行一些额外的配置。首先是幼稚的方法:
Observable<String> o = Observable.<String>create(subscriber -> {
if(subscriber instanceof ParticularSubscriber) {
// do some extra logic here.
}
});
如果我们直接订阅 Observable 就成功了:
o.subscribe(new ParticularSubscriber<>());
但是如果我们对其应用一些操作,情况就会发生变化:
o.map(str -> str + 1)
.filter(str -> str != "")
.subscribe(new ParticularSubscriber<>());
在后一种情况下,一些包装器被传递给 OnSubscribe。在这个包装器的深处有我最初的 ParticularSubscriber,但我没有能力得到它。
有没有办法在观察者的回调中访问最初传递的订阅者?