Lambda
函数式接口
- 函数式接口的定义:
- 任何接口,如果只包含唯一一个抽象方法 ,那么它就是一个函数式接口。
- 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
- 总结
- 要想使用lambda表达式的前提是接口为函数式接口。
- 当lambda表达式只有一行代码时,可以省略为一行,否则必须使用代码块包裹。
- 当只有一个参数时,可以省略参数类型和括号;当有多个参数时也可以省略参数类型,但必须同时省略,且必须使用括号包裹,不能省略括号
为什么要使用lambda表达式
- 避免匿名内部类过多
- 可以让代码看带来很简洁
- 去掉了一堆没意义的代码,只留下核心的逻辑。
演化过程
package com.lambda;
public class Test01 {
static class Like1 implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda2");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
like = new Like1();
like.lambda();
class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda3");
}
}
like = new Like2();
like.lambda();
like = new ILike() {
@Override
public void lambda() {
System.out.println("I Like Lambda4");
}
};
like.lambda();
like = () -> System.out.println("I Like Lambda5");
like.lambda();
}
}
interface ILike{
void lambda();
}
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda1");
}
}