行为抽象和LambdaLambda表达式
【摘要】 目录为什么需要使用Lambda表达式?哪里可以用到Lambda表达式?逐步演进过程(JDK8加入Lambda)对Lambda表达式的再简化为什么需要使用Lambda表达式?避免匿名内部类定义过多简化代码只保留核心逻辑,清晰明了哪里可以用到Lambda表达式?Lambda表达式实际上是函数式编程的思想,对于函数式接口,我们可以通过Lambda表达式来创建该接口的对象。函数式接口:只包含唯一一个...
为什么需要使用Lambda表达式?
- 避免匿名内部类定义过多
- 简化代码
- 只保留核心逻辑,清晰明了
哪里可以用到Lambda表达式?
Lambda表达式实际上是函数式编程的思想,对于函数式接口,我们可以通过Lambda表达式来创建该接口的对象。
函数式接口:只包含唯一一个抽象方法的接口。
逐步演进过程(JDK8加入Lambda)
代码:
/**
* 推导Lambda表达式
* @author 王子龙
* @date Created in 9:29 2020/8/12
*/
public class LambdaTest {
//3.静态内部类
static class Lambda2 implements ILambda {
@Override
public void lambda() {
System.out.println("实现类2");
}
}
public static void main(String[] args) {
ILambda lambda = new Lambda1();
lambda.lambda();
lambda = new Lambda2();
lambda.lambda();
//4.局部内部类
class Lambda3 implements ILambda {
@Override
public void lambda() {
System.out.println("实现类3");
}
}
lambda = new Lambda3();
lambda.lambda();
//5.匿名内部类,没有类名称,必须借助接口或者父类
lambda = new ILambda() {
@Override
public void lambda() {
System.out.println("实现类4");
}
};
lambda.lambda();
//6.Lambda表达式
lambda = () -> {
System.out.println("实现类5");
};
lambda.lambda();
}
}
//1.定义一个函数式接口
interface ILambda {
void lambda();
}
//2.外部实现类
class Lambda1 implements ILambda {
@Override
public void lambda() {
System.out.println("实现类1");
}
}
结果:
对Lambda表达式的再简化
- 对于只有一条语句的,可以去掉花括号。
- 对于有参数的,可以去掉参数类型。
代码:
/**
* 简化Lambda表达式
* @author 王子龙
* @date Created in 9:45 2020/8/12
*/
public class LambdaTest2 {
public static void main(String[] args) {
//Lambda表达式简化1
Lambda2 lambda2 = (int a,int b) -> {
System.out.println(a + b + "简化1");
};
lambda2.fun(1,2);
//Lambda表达式简化2
lambda2 = (a,b) -> {
System.out.println(a + b + "简化2");
};
lambda2.fun(1,2);
//Lambda表达式简化3
lambda2 = (a,b) -> System.out.println(a + b + "简化3");
lambda2.fun(1,2);
}
}
interface Lambda2 {
void fun(int a,int b);
}
结果:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)