Java多线程07-Lamda表达式
07、Lambda表达式
- 希腊字母表排序第十一位的字母,英语名称为Lambda
- 避免匿名内部类定义过多
- 其实质属于函数式编程的概念
为什么要使用lambda表达式
- 避免匿名内部类定义过多
- 可以让你的代码看起来很简洁
- 去掉了一堆没有意义的代码,只留下了核心的逻辑
也许你会说,我看了lambda表达式,不但不觉得简洁,反而觉得更乱,看不懂了。那是因为我们还没有习惯,用的多了,看习惯了,就好了。
理解Functional Interface(函数式接口)是学习java8 lambda表达式的关键所在。
函数式接口的定义
- 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口
- 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象
/*
/推导lamda表达式
*/
public class TestLamda {
//静态内部类
static class Like2 implements Ilike{
@Override
public void lamba() {
System.out.println("i like lamda2");
}
}
public static void main(String[] args) {
Ilike ilike=new Like1();
ilike.lamba();
ilike= new Like2();
ilike.lamba();
//局部内部类
class Like3 implements Ilike{
@Override
public void lamba() {
System.out.println("i like lamda??");
}
}
ilike=new Like3();
ilike.lamba();
//匿名内部类
ilike =new Ilike() {
@Override
public void lamba() {
System.out.println("i like lamda03");
}
};
ilike.lamba();
//lamda简化
ilike=() ->{
System.out.println("i like lamda0555555");
};
ilike.lamba();
}
}
//定义一个函数式接口
interface Ilike{
void lamba();
}
class Like1 implements Ilike{
@Override
public void lamba() {
System.out.println("i like lamda");
}
}
简化过程
public class TestLamda2 {
public static void main(String[] args) {
// Love love=(int a) -> {
// System.out.println("i love you "+a);
// };
// love.love(90);
//简化版本
Love love=a -> System.out.println("i love you"+a);
love.love(90);
}
}
interface Love{
void love(int a);
}
总结
- lambda表达式只有一行代码的情况下才可以简化成一行,如果有多行,那么就用代码块包裹
- 前提是接口为函数式接口
- 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号(单个参数可以省略括号)
本文来自博客园,作者:Cn_FallTime,转载请注明原文链接:https://www.cnblogs.com/CnFallTime/p/15894468.html