gpt4 book ai didi

rx-java - subject.asObservable 有什么用处?

转载 作者:行者123 更新时间:2023-12-02 09:05:07 24 4
gpt4 key购买 nike

为什么 RxJava 需要 asObservable

从技术上讲,每个主题都已经是一个可观察的。它比直接类型转换有什么优势

Observable obs = subject;

最佳答案

如果您只是将 Subject 转换为 Observable,那么您仍然可以通过将其转换回来将其用作 Subject:

PublishSubject<String> subject = PublishSubject.create();
subject.subscribe(System.out::println);
Observable<String> observable = subject;
((PublishSubject<String>) observable).onNext("Hello, world!");

Observable.asObservable() 实际上并未将类型转换为 Observable;它实际上包装了当前的 Observable。这意味着没有人可以访问上游 Observable

使用 asObservable() 的相同代码会因 ClassCastException 崩溃:

PublishSubject<String> subject = PublishSubject.create();
subject.subscribe(System.out::println);
Observable<String> observable = subject.asObservable();
((PublishSubject<String>) observable).onNext("Hello, world!");

它很像final修饰符。有时您不希望代码对一切拥有 100% 的控制权。

关于rx-java - subject.asObservable 有什么用处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35142968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com