我有这个功能:
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.