当前位置: 首页 > 知识库问答 >
问题:

为什么ReactorMono被识别为空Mono?

邢良才
2023-03-14

这是一段代码

@Test
public void test_mono_void_mono_empty() {
    Mono.just("DATA")
        .flatMap(s -> Mono.just(s.concat("-")
                                 .concat(s))
                          .doOnNext(System.out::println)
                          .then())
        .switchIfEmpty(Mono.just("EMPTY")
                           .doOnNext(System.out::println)
                           .then())
        .block();
}

这将向控制台提供以下结果:

DATA-DATA
EMPTY

这意味着第一个平面地图中的链被识别为空链。

另一方面,Reactor具有以下类MonoEmpty,该类由Mono返回。empty()方法。除此之外,该方法还包括以下内容:

/**
 * Create a {@link Mono} that completes without emitting any item.
 *
 * <p>
 * <img class="marble" src="doc-files/marbles/empty.svg" alt="">
 * <p>
 * @param <T> the reified {@link Subscriber} type
 *
 * @return a completed {@link Mono}
 */
public static <T> Mono<T> empty() {
    return MonoEmpty.instance();
}

没有发出任何项,但我用then()方法发出了类型化对象。

对此有何解释?

共有2个答案

景靖琪
2023-03-14

给定的单声道可以不发布任何内容,也可以在发送完成信号之前发布单个值。(它不能发布null-被动规范禁止它。)Mono的泛型类型表示可能被发射的对象的类型,但不能保证它会被发射。

A单声道

有两种常见的情况下可能不会发布某个值—第一种情况是某个值是否存在(例如在数据库或集合中搜索某个项)。在这种情况下,您仍然可以使用单声道

单声道的原因

因此,合乎逻辑的结论是,Mono类型的发布者

太叔栋
2023-03-14

好的,答案在官方的java文档中,它说Void类是一个不可实例化的占位符类,用于保存对表示Java关键字val的Class对象的引用。

这意味着它的主要思想只是将void返回类型表示为一个类,并包含一个

有用的讨论:Java泛型ulid/Void类型

 类似资料:
  • 对于这个程序,它要求用户输入他们的全名。然后,它通过在名字和姓氏之间的空格处将它们分开来排序名字和姓氏。但是,indexOf()无法识别空格并且只返回-1。为什么?谢谢。 以下是PracticeIt的提示: 编写一个名为process Name的方法,该方法接受控制台的Scanner作为参数,并提示用户输入他或她的全名,然后以相反的顺序打印名称(即姓氏、名字)。您可以假设只会给出名字和姓氏。您应该

  • 有25种类型的空白。在下面的代码中显示,25种类型中有4种在Java中不被视为空白。为什么? 参考-https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/character.html#IsWhitespace(char)

  • 为什么会这样?并不是说我绝对需要一个测试方法,我只是好奇而已。当您生成测试方法时,Visual Studio 2012不会给出警告或错误,即使它将无法运行。..

  • 在我的新MacBook中,我安装了最新的Android Studio。然后,在终端中,我创建了.bash_profile,并在文件中添加了以下行: 之后,我运行命令,然后我键入命令,但得到一个错误,adb未被识别为命令。为什么?我也,我看到Android sdk的目录在那里 ====== 更新 有趣的是,如果我这样做,它的工作原理: 为什么?上面的不是与相同吗?为什么我原来的剧本不管用,但上面的剧

  • 我有以下代码,没有编译: 其中返回。 它不识别< code>asScala方法。将导入< code > Scala . JDK . future converters . _ 库。我做错了什么?

  • 问题内容: 我有Ubuntu 10.10和apache2,php 5.3.3-1和mysql 5.1。 我正在通过URL向页面传递一些值。在该页面上,如果我这样做了,那么我会看到数组的内容。但是,如果我这样做数组是空的。任何想法为什么会这样? 问题答案: 也可以尝试检查php.ini中的“ request_order” 选项: