zoukankan      html  css  js  c++  java
  • Lambda之通过“方法引用”让你的Lambda表达式更加简洁

    我们先来看这样两行代码

     可以发现,Lambda本身已经很简洁了,可是方法引用可以更加简洁,今天我们就一起来学习学习什么是“方法引用”

    • 01什么是方法引用

    方法引用通过方法的名字来指向一个方法

    方法引用可以使语言的构造更紧凑简洁,减少冗余代码

    方法引用使用一对冒号 ::

    方法引用是Lambda表达式的另一种写法

    上面四个点就是方法引用的一些特点,下面我们再来看看如何使用方法引用

    02方法引用的使用

    一、语法格式

    1.对象::实例方法名

     2.类::静态方法名

    3.类::实例方法名

    这种调用方式比较特殊,因为我们平时写java代码的时候,从来没有用过“类名.实例方法”这种形式,这里解释一下。“方法引用”中,这种调用形式是有特殊条件的,就是:参数列表中的第一个参数调用的方法的参数是第二参数,就像下面这个x和y的关系一样,x调用的equals方法的参数是y。

     

    二、前提条件

    方法引用使用的前提条件,其实就是方法引用的使用规则,这点十分重要!

    我们都知道Lambda表达式的主要作用就是去实现函数式接口中的抽象方法,那么当这个抽象接口的实现只是一个方法的调用的时候,就可以用方法引用去代替Lambda表达式

    函数式接口中,抽象方法的返回值和参数列表和方法引用的方法的返回值还有参数列表相同这个两个前提条件,光这么看可能有些不容易理解,下面举个例子

    三、举例子

    Consumer<String> c=(x)->System.out.println(x);这个Lambda表达式的实现其实就只有一个方法的调用,"System.out"对象调用了“println”方法,根据“方法引用”的前提条件,就可以把这个Lambda表达式变为方法引用,变为:

    Consumer<String> c=System.out::println;

    然后,我们再来看一看,改写为"System.out::println"这种形式是否满足了第二个前提条件:“抽象方法的返回值和参数列表和方法引用的方法的返回值还有参数列表相同”

     

    通过查看Consumer接口的源码和println方法的源码可以发现,Consumer接口中的accept方法是无返回值,参数列表只有一个泛型参数。而println方法是无返回值参数列表只有一个String参数,符合我们使用“方法引用”的第二个前提。

    03总结

    到这里应该都能理解什么是“方法引用”了,其实就是在满足了一定条件下对Lambda表达式的简写。除了“方法引用”还有“构造器引用”和“数组引用”都是在满足了一定条件下对Lambda表达式的一种简写,但是核心思想都是一样的,感兴趣的小伙伴可以自己学习一下。

    坚持每天进步,自律改变自己
  • 相关阅读:
    AutoMapper bool与string互转
    Self-signed SSL certificates are being blocked
    Visual Studio 2019设置自定义头部注释
    用多进程同步方法演示“桔子-苹果”问题
    实验教学管理系统 c语言程序代写源码下载
    模拟游客一天的生活与旅游java程序代写源码
    Java作业代写
    快餐店运行模拟C++程序源码代写
    hadoop-2.0.0-cdh4.2.1安装手册
    CDH4 HA方案
  • 原文地址:https://www.cnblogs.com/seakyfly/p/13620885.html
Copyright © 2011-2022 走看看