方法引用Demo详解
通过5种语法使用方法引用
方法引用使用总结
1. 在Java8中方法引用Demo详解
1.1 方法引用出现的背景
在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作。 那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑呢?
1.2 问题的引出
//函数式接口,用于打印字符串. interface Print{ public void print(String s); } //使用lambda表达式完成案例测试. public class PrintDemo { public static void main(String[] args) { //Lambda方式解决 print(s -> { System.out.println(s);}, "hello"); } public static void print(Print p,String s){ p.print(s); } } 输出结果: hello
1.3 问题的发现与解决
这段代码的问题在于,对String进行控制台打印输出的操作方案,明明已经有了现成的实现,那就是System.out对象中的println(String)方法。既然Lambda希望做的事情就是调用println(String)方法,那何必自己手动调用呢? 能否省去Lambda的语法格式(尽管它已经相当简洁)呢?只要“路由”过去就好了:
//函数式接口,用于打印字符串. interface Print{ public void print(String s); } //使用lambda表达式完成案例测试. public class PrintDemo { public static void main(String[] args) { //方法引用解决方式 //请注意其中的双冒号“::”写法,这被称为“方法引用”,而双冒号是一种“引用运算符”。 print(System.out :: print,<