函数式接口:一个接口中只包含一个方法。
Lambda表达式:防止内部类过多,去掉一些没有意义的代码,只留下核心逻辑,可以让代码看起来很简洁。
package lambdal;
public class TestLambda{
//main方法
public static void main(String[] args) {
//传统做法 实例化LambdaImpl
Lambda lambda = new LambdaImpl1();
lambda.lambda();
//简化01使用静态内部类
Lambda lambda1 = new LambdaImpl2();
lambda1.lambda();
//化简02使用局部内部类,放在方法里面
class LambdaImpl2 implements Lambda {
@Override
public void lambda() {
System.out.println("重写了Lambda接口,简化02");
}
}
//化简02使用局部内部类,放在方法里面
Lambda lambda2 = new TestLambda.LambdaImpl2();
lambda2.lambda();
//化简03使用匿名内部类,没有类名称,必须借助接口或父类
Lambda lambda3 = new Lambda() {
@Override
public void lambda() {
System.out.println("重写了Lambda接口,简化03");
}
};
lambda3.lambda();
//简化04使用Lambda,因为是函数式接口,接口中只存在一个方法,所以方法名都是固定的,直接省略,直接简化为()和方法体。
//() System.out.println("重写了Lambda接口,简化03"); 再加入->即完成lambda表达式!
Lambda lambda4 = () -> System.out.println("重写了Lambda接口,简化04");
lambda4.lambda();
}
//简化01使用静态内部类
static class LambdaImpl2 implements Lambda {
@Override
public void lambda() {
System.out.println("重写了Lambda接口,简化01");
}
}
}
//传统做法 定义一个Lambda的实现类
class LambdaImpl1 implements Lambda {
@Override
public void lambda() {
System.out.println("重写了Lambda接口");
}
}
//定义一个函数式接口 Lambda
interface Lambda {
void lambda();
}
接口必须为函数式接口!
lambda表达式方法体内只有一行代码时才可省略花括号,否在不能省略!
原文:https://www.cnblogs.com/sxblogs/p/12891751.html