- 适用场合:对于函数式接口,我们可以通过lambda表达式来表示
- 函数式接口:一个接口里面只有一个方法
- 好处:
- 避免匿名内部类定义过多
- 可以让你的代码看起来很简洁
- 去掉了一堆没有意义的代码,只留下核心的逻辑。
- 推导过程:
package com.Thread;
public class LambdaTest1 {
//3.静态内部类
static class Love1 implements ILove{
@Override
public void lambda() {
System.out.println("i love you1");
}
}
public static void main(String[] args) {
//2.实现类的输出
Love love = new Love();
love.lambda();
//3.静态内部类的输出
Love1 love1 = new Love1();
love1.lambda();
//3.局部内部类
class Love2 implements ILove{
@Override
public void lambda() {
System.out.println("i love you2");
}
}
//3.局部内部类的输出
Love2 love2 = new Love2();
love2.lambda();
//4.匿名内部类:没有类的名称,必须借助接口或者父类
ILove love3 = new ILove() {
@Override
public void lambda() {
System.out.println("i love you3");
}
};
//4.匿名内部类的输出
love3.lambda();
//lambda表达式
ILove love4 = ()->{
System.out.println("i love you4");
};
love4.lambda();
}
}
//1.定义函数式接口 函数式接口:接口里面只有一个方法
interface ILove{
void lambda();
}
//2.实现类
class Love implements ILove{
@Override
public void lambda() {
System.out.println("i love you");
}
}```
4. 总结:
- lambda表达式只能有一行代码的情况下才能简化为一行,如果有多行,那么就用代码块包裹
- 前提是接口为函数式接口
- 多个参数也可以去掉参数类型,要去掉就全去掉,要加括号。