Lambda
a)Lambda 它是匿名函数,可传递的代码(简洁)、使用Lambda表达式就可以解决匿名内部类
b)“类型推断“ 例子如下:
Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
List<Integer> list = new ArrayList<Integer>();
List<Integer> list = new ArrayList<>();
c)函数式接口(@FunctionalInterface):接口中只有一个抽象方法的接口
d)Java 8内置四大核心函数式接口:
1)Consumer< T>: 消费性接口 void accept(T t);
2)Supplier< T> : 供给型接口 T get();
3)Function<T, R>: 函数式接口 R apply(T t);
4)Predicate< T>: 断言型接口 boolean test(T t);
e)方法引用的三种语法格式
1)对象::实例方法名
2)类::静态方法名
3)类::实例方法名
注意:
1)lambda体中调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的函数列表和返回值类型保持一致!
2)若lambda参数列表中的第一参数是 实例方法的调用者,而第二个参数是实例方法的参数时,可以使用ClassName :: method
f)构造器引用
格式:ClassName::new
注意:需要调用的构造器的此参数列表要与函数式接口中抽象方法的参数列表保持一致!
g)数组引用
格式:Type[]::new