具有<if>语句的Mono <Boolean>

问题描述

public void func() {
  Mono<Boolean> monoBool = ...
  if (!monoBool) {
     throw new CustomException();
  }
}

我有单声道。我如何在if语句中使用他?

解决方法

!运算符基本上适用于布尔表达式。

很明显,

boolean someBool = ...
if (!someBool) 

有效。当变量的类型为 B oolean时,该方法同样有效,因为可以轻松将引用类型装箱为基本类型。

但是没有规则可以告诉java如何将某个泛型类(无论使用的是泛型类型)转换为布尔值。因此,!monoBol不是有效的Java代码。

但是,在您的情况下,该Mono实例可能会为您提供一个(或多个)布尔值。

换句话说:教育自己如何使用该课程,例如,请参见here

,

您可以使用Mono的导入java.util.function.Supplier参数方法。

例如:

boolean flag = true;
Mono<Boolean> monoExample = Mono.fromSupplier(()->{
   if(flag) {
      throw new RuntimeException();
   }
   return flag;
});