//方法引用与函数试接口
//前提,lambda是特定匿名内部类(只有一个方法需要实现的接口,也就是函数式接口)的简化,方法引用是lambda的简化
//因为executor是函数式接口,所以实例化的方法只能是 void execute(Runnable command); 如2 所以 2可以简化成3
//可以看到简化后入参一致,返回一致
//又因为逻辑只有一行,他还可以继续简化为方法引用
//方法引用的作用:可以在一定条件下简化lambda表达式写法,旨在编写更加简洁紧凑的代码风格,提高代码重用率,不提高执行效率。
//
//可简单理解为:如果一个lambda表达式大括号中的代码仅仅是调用了另外一个方法,此时可用方法引用替换此lambda表达式。
//
//注意:方法引用旨在简化lambda表达式写法,在lambda表达式的基础上使用,不能脱离lambda表达式单独使用。
//————————————————
//版权声明:本文为CSDN博主「雨橄」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
//原文链接:https://blog.csdn.net/xiao_yu_gan/article/details/124704697
//不要单独看方法引用,也不要把他想的太复杂
//1
Executor executor=Runnable::run;
//2
Executor executor2= new Executor() {
@Override
public void execute(Runnable command) {
command.run();
}
};
//3
Executor c = (r) -> r.run();
//4
Collections.emptyList().stream().filter(r-> Objects.nonNull(r)).filter(Objects::nonNull).count();