我有这个功能:
public void a(BooleanSupplier param){}
由函数 b 调用:
public void b(Boolean param){
a(param)
}
问题是函数“a”期待 aBooleanSupplier
但函数 b 正在发送一个布尔值。我想我应该将一个布尔值转换为一个BooleanSupplier
,但我无法将一个转换为另一个。
我有这个功能:
public void a(BooleanSupplier param){}
由函数 b 调用:
public void b(Boolean param){
a(param)
}
问题是函数“a”期待 aBooleanSupplier
但函数 b 正在发送一个布尔值。我想我应该将一个布尔值转换为一个BooleanSupplier
,但我无法将一个转换为另一个。
让我们仔细看看BooleanSupplier
-interface。这是一个功能接口,即它只有一个抽象方法boolean getAsBoolean()
。如我们所见,该方法没有参数并返回一个boolean
.
现在让我们看一下提供的代码。方法b
接收一个参数Boolean param
。方法a
接收一个类型的参数BooleanSupplier
。我们如何将Boolean
收到的 by转换b
为 a BooleanSupplier
?我们只需要创建一个在调用时返回的 lambda param
。当写成 lambda 时,如下所示:
only expression in the lambda -> return-value
^
|
() -> param;
|
v
empty parameter list
Boolean
(type of param
) 和boolean
(expected return-type of )之间的次要类型不匹配BooleanSupplier
通过自动装箱 ( oracle.com
)解决。
所以总的来说,我们现在可以调用a
如下:
a(() -> param);
有关 lambda 及其语法的更多信息,我建议阅读有关该主题的教程,例如来自oracle.com
.