方法引用
lambda体中的内容已经有方法实现,可以使用方法引用
注意:引用方法的返回值类型需要跟接口的返回值类型一致
- 对象::实例方法名
原先的lambda表达式
Consumer<String> consumer = (s) -> System.out.println(s);
使用方法引用后的lambda
Consumer<String> consumer = System.out::println;
- 类::静态方法名
原lambda
BiFunction<Integer,Integer ,Integer> biFunc = (a,b) -> Integer.compare(a,b);
使用方法引用
BiFunction<Integer,Integer ,Integer> biFunc = Integer::compare;
- 类::实例方法名
原lambda
BiFunction<Integer,Integer ,Integer> biFunc = (a,b) -> a.compareTo(b);
使用方法引用后
BiFunction<Integer,Integer ,Integer> biFunc = Integer::compareTo;
注意:实例方法名必须是参数1中的对象方法,而参数2则作为该方法的参数
构造器引用
构造器的参数列表必须与接口的参数列表一致
- 格式:ClassName::new
原先的lambda
Function<String, String> func = (s) -> new String(s);
使用构造器引用后
Function<String, String> func = String::new;
- 数组引用
原lambda
Function<Integer,String[]> func = integer -> new String[integer];
改进后
Function<Integer,String[]> func = String[]::new;