我如何继承 Observable<T>?

How do I inherit from an Observable<T>?

我想构建一个继承自 Observable<EventArgs> 的事件代理 class。在 Rx 的 .NET 实现中,你可以简单地实现 IObservable<EventArgs>;此外,在 .NET 中,publish() 方法只接受您希望订阅者接收的参数。

谁能解释一下 Java 是如何做到的?我想要的只是一个 class 本质上表现为 Observable<Foo>.

在大多数情况下,没有必要实现自己的 Observable 继承者。有很多构造方法可以创建 Observable 并处理它的行为。例如:

Observable.create(new ObservableOnSubscribe<String>() {
    @Override public void subscribe(ObservableEmitter<String> emitter) throws Exception {
        emitter.onNext("New event");

        emitter.onError(new Error());

        emitter.onComplete();
    }
});

但是,如果您真的需要创建一个继承者,那也不难。

class MarkedObservable extends Observable<String> {

    @Override protected void subscribeActual(Observer<? super String> observer) {
        observer.onNext("Message");

        observer.onError(new Error());

        observer.onComplete();
    }
}