从 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
Boolean
(param
的类型)和 boolean
(BooleanSupplier
的预期 return 类型)之间的次要类型不匹配通过 autoboxing (oracle.com
).
总的来说,我们现在可以调用 a
如下:
a(() -> param);
有关 lambda 及其语法的更多信息,我建议阅读有关该主题的教程,例如this one from oracle.com
.
我有这个功能:
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
Boolean
(param
的类型)和 boolean
(BooleanSupplier
的预期 return 类型)之间的次要类型不匹配通过 autoboxing (oracle.com
).
总的来说,我们现在可以调用 a
如下:
a(() -> param);
有关 lambda 及其语法的更多信息,我建议阅读有关该主题的教程,例如this one from oracle.com
.