Lambda表达式
-
λ 希腊字母表中排序第十一的字母,英语名称为Lambda
-
避免匿名内部类定义过多
-
其实质属于函数式编程概念
(params) -> expression[表达式] (params) -> statement[语句] (params) -> { statements}
a -> System.out.println(“i like lambda” + a);
new Thread(()->System.out.println(“多线程学习。。。”)).start();
理解 Functional Interface (函数式接口) 是学习Java8 lambda表达式的关键所在
函数式接口的定义:
-
任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口
public interface Runnable{ public abstract void run(); }
-
对于函数式接口,我们可以通过lambda表达式来创建该接口的对象
推导lambda表达式
package com.li.lambda;
public class TestLambda02 {
public static void main(String[] args) {
//lambda表达式
ILove love = (int a) ->{
System.out.println("i love you ->" +a);
};
love.love(520);
//简化参数类型和括号 多个参数要用括号 (a,b)
ILove love2 = a->{
System.out.println("i love you ->" +a);
};
love2.love(521);
//简化花括号:核心代码就一行,多行不可以简化花括号 (前提为接口是函数式接口)
ILove love3 = a ->
System.out.println("i love you ->" +a);
love3.love(522);
}
}
//定义一个函数式接口
interface ILove {
void love(int a);
}