在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作。
那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑?
- 根本目的:继续对Lambda表达式进行简化
例如
import java.util.function.Consumer;
public class Demo01 {
public static void main(String[] args) {
//使用Lambda表达式简化
acceptMethod("你好",s-> System.out.println(s));
/*对象System.out是已经存在的
成员方法println也是已经存在的
可以使用方法引用,使用对象System.out引用成员方法println,来简化Lambda表达式*/
acceptMethod("你好",System.out::println);
}
public static void acceptMethod(String a,Consumer<String> consumer){
consumer.accept(a);
}
}
对象System.out是已经存在的
成员方法println也是已经存在的
可以使用方法引用,使用对象System.out引用成员方法println,来简化Lambda表达式
如果Lambda要表达的函数方案已经存在于某个方法的实现中,那么则可以通过双冒号来引用该方法作为Lambda的替代者
Lambda表达式写法:s -> System.out.println(s);
方法引用写法:System.out::println