Jul*_*bin 4 methods lambda types java-8
我想知道为什么方法引用和lambda不被识别为函数.为什么我需要写
Function<Integer, Integer> fun1 = i -> i+2;
Function<Integer, Integer> fun2 = i -> i*i;
fun1.compose(fun2).apply(4);
Run Code Online (Sandbox Code Playgroud)
代替
((Integer i) -> i*2).compose((Integer i) -> i+2).apply(4)
Run Code Online (Sandbox Code Playgroud)
Bri*_*etz 12
Lambda表达式没有内在类型; 以下是错误:
Object lambda = x -> x;
Run Code Online (Sandbox Code Playgroud)
Lambda表达式是多重表达式,它们的类型取决于它们的上下文.特别是,lambda表达式从其目标类型派生其类型,目标类型必须是功能接口 - 具有单个(非Object)抽象方法的接口.相同的lambda表达式可以有多种类型,具体取决于其目标类型:
Predicate<String> isEmpty = s -> s.isEmpty();
Function<String, Boolean> isEmpty = s -> s.isEmpty();
Run Code Online (Sandbox Code Playgroud)
界面Function不是语言的一部分,也没有任何魔法属性; 它只是一个普通的功能界面,就像Runnable或Predicate或Comparable.编译器没有理由猜测你的意思是lambda Function而不是其他类型.
此外,您不需要成为lambda来实现Function; 你可以是一个命名类或一个匿名类.Lambdas(和方法refs)是一种语法紧凑的方法,用于指定功能接口的实例.
| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |