「Java」方法引用,使用起来最简洁的Java语法


「Java」方法引用,使用起来最简洁的Java语法
文章图片
「Java」方法引用,使用起来最简洁的Java语法
文章图片
「Java」方法引用,使用起来最简洁的Java语法
文章图片
「Java」方法引用,使用起来最简洁的Java语法
文章图片
「Java」方法引用,使用起来最简洁的Java语法
今天是刘小爱自学Java的第48天 。
感谢你的观看 , 谢谢你 。
话不多说 , 开始今天的学习:
昨天回顾了函数式编程的一些概念 。

今天开始学习方法引用 , 它是lambda表达式的进一步简化版 , 语法还要更加地简洁 。
一、方法引用现有一个需求:
将一个字符串信息全部转换成大写字母 , 再打印出来 。
利用函数式编程思想编写代码 。
1.lambda表达式编写
①函数式接口Printable

这是一个自定义的打印接口 , 有一个打印信息的抽象方法printMsg()
②lambda表达式
method方法中有两个参数 , 用lambda表达式表示的是接口的实现类对象 。 并且在lambda表达式中 , 业务逻辑已经写出来了 。
什么叫业务逻辑?
我的理解是方法内容:根据什么参数得到了什么结果 。
上述例子中就是:根据传过来的字符串消息(也就是参数msg)
结果将msg全部变成大写字母(msg.toUpperCase)
这就是业务逻辑 , 当然我举的这个例子非常简单 , 现实里肯定要复杂的多 。
2.方法引用
方法引用是用来代替lambda表达式的 , 更加地简洁 , 从某种意义上来说 , 它们的作用其实是差不多的 。
①方法引用

具体格式为:new MyPrint()::printMsg
核心是这个双冒号“::” , 如何理解这个格式?
就可以理解成是MyPrint对象在调用printMsg方法 。
为什么它能直接这样使用?因为它的逻辑已经存在 , 也就是MyPrint类中有printMsg方法以及其业务逻辑
②业务逻辑
将字符串msg全部变成大写字母 , 这就相当于是在MyPrint类中重写了接口中的抽象方法 。
3.方法引用和lambda表达式:
现在问题来了:方法引用不是对lambda表达式的简化么?怎么感觉代码还越来越繁琐了?
我们只看①而言 , 方法引用要比lambda表达式简单吧?
如果我使用方法引用 , 该业务逻辑无论被使用多少次 , 我只需要写一次 , 其它时候直接调用;
如果我是用lambda表达式 , 我每调用一次就要将业务逻辑写一遍 。
所以方法引用的简洁之处在于相同逻辑不需要重复地写 。
这样理解下来 , 方法引用要比lambda表达式简洁很多 , 尤其是在业务逻辑很复杂的时候
当然方法引用的前提:业务逻辑已经存在 。

  • 如果逻辑已经存在 , 我直接使用方法引用即可 ,
  • 如果逻辑不存在 , 还是乖乖地写lambda表达式 。
二、方法引用的其它方式上述例子中的方法引用是对象在引用方法 , 除了对象引用之外还有很多其它方式 。
1.类名引用
如果是静态方法 , 直接用类名就可以调用方法 。
Java底层中已经写好了很多工具类 , 其大多数方法都是静态方法 , 直接使用方法引用会方便很多 。