java编译器如何解决lambda返回类型,而Predicate的方法只能返回布尔值?

时间:2018-11-20 10:00:02

标签: java lambda

我不明白的是,我们知道Java即使使用Lambda也不支持动态类型,并且在编译时已将其编译为Predictor。

我不明白的是,Predicator的默认方法只能返回布尔值,而Lambda表达式可以返回任何值。如何存档?

1 个答案:

答案 0 :(得分:1)

while Lambda expression can return anything.这是错误的

将lambda表达式写入函数接口中的相应抽象方法

Predicate为例,lambda表达式将被写入相应的抽象方法boolean test(T t)

来自Java文档 here(带有清晰示例)

  

功能接口是仅包含一个抽象方法的任何接口。 (一个功能接口可能包含一个或多个默认方法或静态方法。)由于一个功能接口仅包含一个抽象方法,因此在实现该方法时可以省略该方法的名称。为此,您可以使用lambda表达式,而不是使用匿名类表达式,该表达式在以下方法调用中突出显示:

参考:方法5:使用Lambda表达式指定搜索条件代码

参考:方法6:将标准功能接口与Lambda表达式配合使用