lambda表达式有两种表现形式
形式一:函数式接口的用法
当一个接口里有且只有一个方法时,可以称作为函数式接口
使用lambda去实现这个接口:
// boolean test(T t); 假设一个predicate接口中只有这一个抽象方法
//lambda表达式:
Predicate p = num -> num < 10;
// Predicate p = (num )-> {return num < 10}; 完整写法
sout(p.test(3))
//控制台输出方法结果为true
语法分析:接口类型 = 该方法参数 -> 实现的方法体
lambda自带类型推断机制,所以参数类型可写可不写,实现的方法体的return和大括号可写可不写
形式二:将lambda表达式所代表的函数式接口作为一个方法的参数
//Thread类实现了Runnable 接口:
public class Thread implements Runnable
//Runnable 接口只有一个抽象方法:
public abstract void run();
//一个Thread类有如下构造方法
public Thread(Runnable target) {
init(null, target, "Thread-" + nextThreadNum(), 0);
}
//使用lambda表达式创建一个Thread对象并且实现它的run方法
Thread thread = new Thread(() -> System.out.println("run.."));
thread.run();
//控制台打印结果:
"C:\Program Files\Java\jdk1.8.0_60\bin\java.exe" "-
run..