java: lambda表达式(极简解释)(自用)
·
1.语法
(参数列表) -> { 函数体 }
lambda 表达式是为了简化写法
原来的写法是使用匿名内部类:
对象a.方法b(new C() {
@Override
public 返回类型 方法d(参数e, 参数f, 参数g, ...) {
...
}
})
使用lambda表达式的写法是:
对象a.方法b( (参数e, 参数f, 参数g, ...) -> { ... } )
lambda的参数列表要和方法d的一致。
如果参数只有一个,可以去掉括号
2.这里有几个条件或规定:
1.方法b 的参数类型是一个只有一个抽象方法的接口(也叫函数式接口)
interface C {
抽象方法 d(...);
// 只能有一个抽象方法
}
C不能是普通类(没有抽象方法),也不能是有多个抽象方法的接口
比如,下面这个接口就不可以,因为有多个抽象方法了:
interface C2 {
void d1();
void d2();
}
2.目标类型 C明确,也就是方法b不能有重载,也就是b的参数类型唯一确定,下面这种就不行:
方法b(String s) {
...
}
方法b(Intger i){
...
}
更多推荐

所有评论(0)