什么是Lambda表达式
个人认为 是一种简化代码的一种方法 让代码看着更简洁 更舒服
语法
无参数:()->一行表达式....;
一个参数:a->一行表达式....;
多个参数(a,b,...n)->{表达式};
()
只有一个参数的情况下才可以省略
{}
只有一行表达式的情况下才可以省略
示意图
示例
package day02;
/*
* 推导lambda表达式
*
* 函数式接口:任何接口 如果仅仅包含一个抽象方法 那么他就是一个函数式接口
*
* 对于函数式接口 可以通过Lambda表达式来创建该接口的对象
* */
public class TestLambda {
// 静态内部类
static class BoyIn implements Boy {
@Override
public void say() {
System.out.println("静态内部类之我是一个男孩");
}
}
public static void main(String[] args) {
// 直接调用
new BoyIn().say();
// 局部内部类
class BoyIn implements Boy {
@Override
public void say() {
System.out.println("局部内部类之 我是一个男孩");
}
}
Boy boy = new BoyIn();
boy.say();
// 匿名内部类 没有类的名称 必须借助接口或者父类
boy = new Boy() {
@Override
public void say() {
System.out.println(" 匿名内部类 之 我是一个男孩");
}
};
boy.say();
// 用Lambda简化
boy = ()->{
System.out.println(" Lambda简化 之 我是一个男孩");
};
boy.say();
}
}
interface Boy {
void say();
}
// 定义一个实现类
class BoyIn implements Boy {
@Override
public void say() {
System.out.println("我是一个男孩1");
}
}
输出结果
小结
当且仅当
任何接口只有一个
抽象方法的时候 才可以使用Lambda表达式
省去了大量的代码 让代码看着更简洁 执行效率更快