??Lambda和匿名内部类的功能是一样的,不过Lambad会比匿名内部类更加特殊,它一般是作用于只有一个抽象方法的接口,这种接口是函数式接口(接口需要添加@FunctionalInterface)。
抽象方法 | |
---|---|
Consumere<T>消费型 | 有参数无返回值 |
Supplier<T>供给型 | 无参数有返回值 |
Function<T>函数型 | 有参数有返回值 |
Predicate<T>判断型 | 有参数有返回值,但返回值为boolean |
lambad可分为俩部分,分别是参数列表和函数体
// 参数列表
()
?
?
//函数体
{
System.out.println("hello" + Thread.currentThread().getName());
}
参数列表的类型可以不写,因为它会类型推断
PriorityQueue<Integer> pq = new PriorityQueue<>((o1,o2) -> {
return o1 - o2;
});
如果参数列表只有一个参数可以不写()
如果没有参数不可以省略()
如果函数体只有一行且是返回的语句,那么可以省略{}
之后补充
原文:https://www.cnblogs.com/matt17/p/14098354.html