lambda表达式
-
避免内部类定义过多
-
其实质属于函数式编程的概念
-
理解函数式接口是学习lambda表达式的关键所在
-
函数式接口的定义
- 任何接口只包含唯一一个抽象方法,他就是函数式接口
- 对于函数式接口,可以通过lambda表达式来创建该接口的对象
public interface Runnable{
public abstract void run();
}
/*
lambda表达式要基于函数式接口(即只有一个抽象方法的接口)
*/
public class TestLambda {
//3.定义静态内部类
static class Love2 implements ILove{
@Override
public void love(int a) {
System.out.println("i love you->" + a);
}
}
public static void main(String[] args) {
ILove love = new Love1();
love.love(520);//序号2的调用
love = new Love2();
love.love(521);//序号3的调用
//4.定义局部内部类
class Love3 implements ILove{
@Override
public void love(int a) {
System.out.println("i love you->" + a);
}
}
love = new Love3();
love.love(522);
//5.匿名内部类
love = new ILove() {
@Override
public void love(int a) {
System.out.println("i love you->" + a);
}
};
love.love(523);
//6.lambda表达式,省去类和方法名
love = (int a)->{
System.out.println("i love you->" + a);
};
love.love(524);
//7.省去参数类型,如果由多个参数,要省去时都省去(a, b, c)
love = (a)->{
System.out.println("i love you->" + a);
};
love.love(525);
//8.省去小括号,只有一个参数时,当有多个参数不能省去
love = a -> {
System.out.println("i love you->" + a);
};
love.love(526);
//9.省区花括号,当有多行输出时不能省区花括号
love = (a)-> System.out.println("i love you->" + a);
love.love(527);
}
}
//1.定义一个接口
interface ILove{
void love(int a);
}
//2.实现此接口
class Love1 implements ILove{
@Override
public void love(int a) {
System.out.println("i love you->" + a);
}
}