从 Boolean 转换为 BooleanSupplier

Convert from Boolean to BooleanSupplier

我有这个功能:

public void a(BooleanSupplier param){}

由函数 b 调用:

public void b(Boolean param){
   a(param)
}

问题是函数“a”需要一个 BooleanSupplier 但函数 b 正在发送一个布尔值。我想我应该将布尔值转换为 BooleanSupplier,但我无法将一个转换为另一个。

让我们仔细看看BooleanSupplier-interface。这是一个功能接口,即它只有一个抽象方法 boolean getAsBoolean()。正如我们所见,该方法没有参数并且 returns a boolean.

现在让我们看看所提供的代码。方法 b 接收一个参数 Boolean param。方法 a 接收一个 BooleanSupplier 类型的参数。我们如何将 b 收到的 Boolean 转换为 BooleanSupplier?我们只需要创建一个 lambda,当调用时 - returns param。当写成 lambda 时,它看起来如下:

only expression in the lambda -> return-value
        ^
        |
() -> param;
 |
 v
empty parameter list

Booleanparam 的类型)和 booleanBooleanSupplier 的预期 return 类型)之间的次要类型不匹配通过 autoboxing (oracle.com).

总的来说,我们现在可以调用 a 如下:

a(() -> param);

有关 lambda 及其语法的更多信息,我建议阅读有关该主题的教程,例如this one from oracle.com.