subject.asObservable 有什么用?

2024-02-22

为什么需要RxJavaasObservable?

从技术上讲,每个主题都已经是一个可观察的。它比仅仅铸造它有什么优势

Observable obs = subject;

如果你只是投Subject to an 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% 的控制权。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

subject.asObservable 有什么用? 的相关文章

随机推荐

  • 正确使用电子

    我想进入 Electron 并且我已经开始学习它 但是我认为我不太明白应该如何使用它 根据我收集的信息 使用 Electron 我能够创建跨桌面应用程序 铬 with HTML CSS 和 JavaScript并在后台执行任务 NodeJS
  • 返回 void* 的 C++/C 函数指针

    我正在尝试调用一个带有参数的函数 void void int const char 但我不知道如何将这些参数传递给函数 Example void ptr int int function int int void int 我试图像这样调用该
  • 如何在 CodeIgniter 中检查请求是否是通过 AJAX 发出的?

    如何检查请求是否是 AJAX 我正在使用 CodeIgniter 我有一个链接 当它单击时 它将打开弹出对话框窗口 这是通过 ajax 请求控制器名称来完成的login window 代码点火器 Here is the controller
  • pip 未能为 scipy 构建轮子

    我刚刚下载了新的python 3 8我正在尝试安装scipy使用以下内容进行封装 pip3 8 install scipy 但是构建失败并出现以下错误 Failed to build scipy ERROR Could not build
  • 如何重构这个?

    我试图重构这个 class AClass string Property1 get set string Property2 get set string Property3 get set void AMethod AClass othe
  • symfony2主义选择IFNULL

    好的 我有这个代码 SELECT IFNULL s2 id s1 id AS effectiveID IFNULL s2 status s1 status AS effectiveStatus IFNULL s2 user id s1 us
  • dplyr: case_when 涉及很多情况

    我有两个数据框 set seed 002 data1 lt data frame cbind a1 sample letters 8 replace TRUE a2 rpois 8 10 stringsAsFactors FALSE dat
  • 复选框已全部单击

    我想在单击任何子项时选择父项 这段代码正在检查和检查 function child on click function parent this prevAll parent if this is checked parent prop ch
  • 如何避免 Java 中的 switch-case 语句[重复]

    这个问题在这里已经有答案了 我有一个 TriggerType 枚举 可以在其中添加不同的触发器 public enum TriggerType meta data list toggle 这些触发器类型在不同的处理程序 例如组件 仪表板等
  • 如何为 Facebook 应用程序设置画布 url?

    这个问题之前已经被问过很多次了 但是最近 Facebook 开发者网站显然发生了变化 因此该解决方案在任何地方都找不到 Here s what the problem looks like 抱歉 您使用的应用程序配置错误 请稍后重试 Now
  • 以编程方式在音频元素上设置当前时间属性会导致事件侦听器无限期地触发

    正如标题所述 当设置currentTime以编程方式指定音频元素的属性 设置该值后 事件侦听器将无限期地反复触发 音频将尝试播放 但由于正在进行太多处理 音频将跳过 我的浏览器将开始变得无响应 我通过删除对的绑定解决了这个问题current
  • Crypto.Signature.PKCS1_v1_5 和 Crypto.Signature.pkcs1_15 有什么区别?

    我想知道两者之间有什么区别Crypto Signature PKCS1 v1 5 and Crypto Signature pkcs1 15 In the 文档 https www pycryptodome org en latest sr
  • 为什么位图数据没有通过Flash发布到服务器端?

    这是我用来将位图数据发布到服务器端的代码 PHP private function savePicToServer bmpData BitmapData void trace in savePicToServer trace bmpData
  • 正则表达式在数字之间替换

    我想要替换以下时间码 00 04 02 01 gt 00 04 02 01 如何用冒号替换两个数字之间的空格 我想出了 d s d 但这显然也包括数字 捕获您的数字 然后在替换时使用它们 d s d 用 来代替 1 以下示例使用 JavaS
  • 在 Swift 中添加视图控制器作为子视图

    我正在尝试使用 swift 构建一个简单的计算器应用程序 我创建了两个具有基本和高级选项的视图控制器 早些时候在 Obj C 中曾经这样做过 AViewController alloc initWithNibName nibName bun
  • C++ - 重载 [] 运算符

    我有一个模板类数组 template
  • Doctrine2 的查询构建器子字符串帮助器方法的正确语法

    好吧 这个问题可能是由于我对查询生成器帮助器方法的理解模糊 但我一生都找不到使用子字符串方法的正确方法 我试图返回以指定字母数字值开头的所有结果 下面的代码不会引发任何错误 但也不会返回任何结果 我已经搜索过谷歌 但显然几乎没有任何内容显示
  • 如何编写特定于浏览器的 JavaScript 代码? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何编写特定于浏览器的 JavaSc
  • FPDF:使用 AJAX 输出 PDF

    我有一个 PHP 文件 我在其中使用 FPDF 生成 PDF 文件 如果我执行该文件 它会在浏览器上生成并加载 pdf 文件 但是 当我尝试使用按钮并使用 AJAX 生成 PDF 文件时 它不起作用 我正在使用 AJAX 因为我需要将一些变
  • subject.asObservable 有什么用?

    为什么需要RxJavaasObservable 从技术上讲 每个主题都已经是一个可观察的 它比仅仅铸造它有什么优势 Observable obs subject 如果你只是投Subject to an Observable那么你仍然可以使用