Lamda表达式之方法的引用

            上篇文章简单的介绍了Lamda表达式的语法以及使用方法,但是有些“老司机”的使用方式是不走寻常路的,有时候我们仍然看不懂他们的代码,如下:

这是什么写法呢?上面代码的解释就是:表示返回User对象一个新的实例,我们可以使用常规的表达式语法()->{return new User;};也可以使用上述极简模式。这个就是我们今天要讲的,在Lamda表达式中使用方法的引用。

            且开始我们今天的博客主题---方法的引用!

            什么是方法的引用呢?我们先看理论知识。

            定义:方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法,方法引用提供了一种引用而不执行方法的方式,如果抽象方法的实现恰好可以使用调用另外一个方法来实现,就有可能可以使用方法引用

            先做个总结,方法的引用可以分为四种,分别是静态方法引用,实例方法引用,对象方法引用,以及构造方法引用。如下图所示。

下面我们就这四种方法的引用,用具体的实例来理解上述的知识点。

一、静态方法引用

        如果函数式接口的实现恰好可以通过调用一个静态方法来实现,那么就可以使用静态方法引用。

二、实例方法引用 

            和静态方法类似,如果函数式接口的实现恰好可以通过调用一个实例的实例方法来实现,那么就可以使用实例方法引用

三、对象方法引用(难点)

        抽象方法的第一个参数类型刚好是实例方法的类型,抽象方法剩余的参数恰好可以当做实例方法的参数。如果函数式接口的实现能由上面说的实例方法调用来实现的话,那么就可以使用对象方法引用。

        上述定义我们至少可以得到三点基本的对象引用的要素:1第一个参数类型刚好是实例方法的类型      2抽象方法剩余的参数恰好可以当做实例方法的参数

        我们就上述定义,看看到底什么时候可以使用对象引用:

解释都在注释中,例子比较牵强,但是很能说明当我们满足什么样的条件的时候可以使用对象参数。这里我提供自己的记忆方法

四:构造方法引用

            如果函数式接口的实现恰好可以通过调用一个类的构造方法来实现,那么就可以使用构造方法引用。

            构造方法引用和静态方法引用以及实例方法引用类似,较为简单。如下代码:

        上述示例代码中,分别例举了无参数和有参数的构造方法引用例子,注意一下在使用有参数的构造方法时,函数式接口传入的参数恰好为构造方法需要的参数,且参数顺序一样。

        后面我们会学习一下Stream API的使用,敬请期待。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,692评论 19 139
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,282评论 8 265
  • 1.1 spring IoC容器和beans的简介 Spring 框架的最核心基础的功能是IoC(控制反转)容器,...
    simoscode阅读 6,856评论 2 22
  • 离不开使用表格的我们,天天不停地创建TableView和CloectionView。在cell上面有switch开...
    OwenKing阅读 180评论 0 2
  • 事件: 孩子不愿聆听他人。只想表达自己。要求他干什么总说凭什么。 也觉得不愿意聆听我安排的工作。 思维空性: 我从...
    黛儿微笑阅读 274评论 0 1

友情链接更多精彩内容