Lambda 表达式(lambda expression)是一个匿名函数,即没有函数名的函数。
上代码,从最基本的接口往下引入lambda表达式
interface Arithmatic{
int sum(int a , int b );
}
public class LambdaEx {
public static void main(String[] args) {
Arithmatic ss = new Arithmatic() {
@Override
public int sum(int a, int b) {
return 0;
}
};
可以看到 ss = new Arithmatic(){...},它是一个匿名类,按照Java语法,接口是不能至创建实例的,这里其实是省略了接口的实现类,
class Qiuhe implements Arithmatic{
@Override
public int sum(int a, int b) {
return a+b;
}
}
而这里定义的Qiuhe类,可以取任意合法的名字。为了简化代码,一般的,接口对象都是引用子类对象,这个子类我们可以省略,用匿名类来替代他,然后重写他的方法即可。
然而众人还是对匿名类的写法感觉还是很冗余,于是开发了一套更简洁的语法。
lambda表达式语法:(parameters) -> expression 或 (parameters) ->{ statements; }
可以看得出来,确实比之前的代码更简洁了,他省略了,修饰符,关键字,函数名...查阅源码得出,lambda表达式的函数式接口,只有一个抽象方法。
应用语法生成新的代码
interface Arithmatic{int sum(int a , int b );}
public class LambdaEx {
public static void main(String[] args) {
Arithmatic sum2 = (a,b)-> a+b;
}
}
可以清楚的看到,代码量少的不止一点点。