我不明白的是,我们知道Java即使使用Lambda也不支持动态类型,并且在编译时已将其编译为Predictor。
我不明白的是,Predicator的默认方法只能返回布尔值,而Lambda表达式可以返回任何值。如何存档?
答案 0 :(得分:1)
while Lambda expression can return anything.
这是错误的
将lambda表达式写入函数接口中的相应抽象方法
以Predicate
为例,lambda表达式将被写入相应的抽象方法boolean test(T t)
来自Java文档 here(带有清晰示例)
功能接口是仅包含一个抽象方法的任何接口。 (一个功能接口可能包含一个或多个默认方法或静态方法。)由于一个功能接口仅包含一个抽象方法,因此在实现该方法时可以省略该方法的名称。为此,您可以使用lambda表达式,而不是使用匿名类表达式,该表达式在以下方法调用中突出显示:
参考:方法5:使用Lambda表达式指定搜索条件代码
参考:方法6:将标准功能接口与Lambda表达式配合使用