Lambda 表达式
-
λ 希腊字母,英语名称 lambda
-
避免匿名内部类定义过多,只保留核心逻辑
-
实质属于函数式编程
new Thread(()-> System.out.println("我爱你!")).start();
函数式接口:只包含一个抽象方法的接口
public interface Runnable{
void run();
}
匿名内部类用Lambda简化,箭头只能指向一个方法实现,所以要求函数式接口,只包含一个抽象方法的接口
//1.匿名内部类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I like lambda4");
}
};
//2.用lambda简化
like = () -> {
System.out.println("I like lambda5");
};
参数简化
//1.带参
love = (int a) -> {
System.out.println("I love -->"+a);
};
//2.简化参数类型
love = (a) -> {
System.out.println("I love -->"+a);
};
//3.简化括号
love = a -> {
System.out.println("I love -->"+a);
};
//4.简化花括号
love = a -> System.out.println("I love -->"+a);
总结:
- Lambda 表达式只有一行代码的情况下才能简化成一行,如果有多行就用代码块包裹;
- 前提是接口为函数式接口;
- 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号。
love = (a,b,c,d) -> {
System.out.println("I love -->"+a+b+c+d);
};