Lambda表达式
- 希腊字母排序第十一为的字母
- 避免匿名内部类定义过多
- 实质属于函数式编程的概念
为什么要用呢?
- 避免匿名内部类定义过多
- 代码简洁
- 去掉了没有意义的代码,只留下核心的逻辑
理解Functional Interface(函数式接口)式学习java8 lambda表达式的关键所在。
函数式接口定义
- 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。如下例子:
public interface MyInterface{
public abstract void myFunction();
}
- 对于函数式接口,我们可以通过lambda表达式来创建该接口。
1.对接口的实现
2.静态内部类
3.局部内部类
4.匿名内部类
5.Lambda表达式
package com.xv.lambda;
/**
* 推到lambda表达式
*/
public class TestLambda {
//3静态内部类
static class Like2 implements Ilike{
@Override
public void lambda() {
System.out.println("I like lambda2");
}
}
public static void main(String[] args) {
Ilike ilike = new Like();
ilike.lambda();
ilike = new Like2();
ilike.lambda();
//4.局部内部类
class Like3 implements Ilike{
@Override
public void lambda() {
System.out.println("I like lambda3");
}
}
ilike = new Like3();
ilike.lambda();
//5匿名内部类
ilike = new Ilike(){
@Override
public void lambda() {
System.out.println("I like lambda4");
}
};
ilike.lambda();
//6Lambda表达式
ilike = ()->{
System.out.println("I like lambda5");
};
ilike.lambda();
}
}
//定义一个函数式接口
interface Ilike{
void lambda();
}
//实现类
class Like implements Ilike{
@Override
public void lambda() {
System.out.println("I like lambda");
}
}
Lambda表达式进一步简化
只有一行执行代码的情况下才能简化成一行
必须函数式接口
多个参数要去掉定义都去掉,必须要加小括号
package com.xv.lambda;
//只有一行的情况下才能这么简化,函数式接口,多个参数要去掉定义都去掉,要小括号
public class TestLambda2 {
public static void main(String[] args) {
Love love = null;
//简化1
love = (a)->{
System.out.println("爱你Lambda!"+a);
};
love.sayLove(5);
//简化2
love = a->{
System.out.println("爱你Lambda!"+a);
};
love.sayLove(520);
//简化3去掉大括号
love = a->System.out.println("爱你Lambda!"+a);
love.sayLove(530);
}
}
interface Love{
void sayLove(int a);
}