你真的会使用Java的方法引用吗

 更新时间:2021年08月06日 11:45:06   作者:小阿杰  
这篇文章主要给大家介绍了关于Java方法引用的相关资料,方法引用是Java8的新特性,方法引用其实也离不开Lambda表达式,本文通过示例代码介绍的很详细,需要的朋友可以参考下

前言

Java 8由Oracle公司于2014年3月18日发布,至今已过去数年之久。然而,直到今日仍有许多软件开发者对其相关特性不了解,这可能主要是Java基础教材更新缓慢的原因。Java 8 方法引用是Java 8的新特性,Java 8出来已经很久了,相信很多伙伴都已经在使用了,也有少部分不知道方法引用是怎么使用的,那么本文将带领大家一起初始Java的方法引用。

方法引用是什么?

  方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法。方法引用提供了一种引用而不执行方法的方式,它需要由兼容的函数式接口构成的目标类型上下文。计算时,方法引用会创建函数式接口的一个实例。

  • 方法引用通过方法的名字来指向一个方法。
  • 方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
  • 方法引用使用一对冒号 :: 。

方法引用与Lambda表达式

Java 8 中我们可以通过 :: 关键字来访问类的构造方法,对象方法,静态方法。

类型 方法引用 Lambda表达式
静态方法引用 类名::staticMethod (args) -> 类名.staticMethod(args)
实例方法引用 inst::instMethod (args) -> inst.instMethod(args)
对象方法引用 类名::instMethod (inst,args) -> 类名.instMethod(args)
构建方法引用 类名::new (args) -> new 类名(args)

方法引用的使用

为了更好的演示方法引用的使用方法,特引入了基础代码。

@Data
@ApiModel
class DataInfo{
    private String name;

    private String info;

    private String welcome;

    public static DataInfo create( Supplier<DataInfo> supplier) {
        return supplier.get();
    }

    public static void getDataInfo( DataInfo dataInfo) {
        System.out.println("DataInfo : " + dataInfo.toString());
    }

    public void getWebNameinfo( DataInfo dataInfo) {
        System.out.println(" WebName " + dataInfo.getName());
    }

    public void getWelcomeInfo() {
        System.out.println("welcome " + this.toString());
    }
}

静态方法引用

静态方法引用:它的语法是Class::static_method

dataInfoList.forEach(DataInfo::getDataInfo);

实例方法引用

特定对象的方法引用:它的语法是instance::method实例

dataInfoList.forEach( DataInfo.create( DataInfo::new )::getWebNameinfo );

对象方法引用

特定类的任意对象的方法引用:它的语法是Class::method

 dataInfoList.forEach(DataInfo::getWelcomeInfo);

构建方法引用

构造器引用:它的语法是Class::new。

DataInfo dataInfo = DataInfo.create(DataInfo::new);

总结

Java 8 中方法引用,使语言的构造更紧凑简洁,减少冗余代码,让程序员写出高效率、干净、简洁的代码。

到此这篇关于Java方法引用的文章就介绍到这了,更多相关Java方法引用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot X-Accel-Redirect 大文件下载实现

    springboot X-Accel-Redirect 大文件下载实现

    本文主要介绍了springboot X-Accel-Redirect 大文件下载实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • MyBatis-Plus逻辑删除和字段自动填充的实现

    MyBatis-Plus逻辑删除和字段自动填充的实现

    本文主要介绍了MyBatis-Plus逻辑删除和字段自动填充的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • java实现http请求工具类示例

    java实现http请求工具类示例

    这篇文章主要介绍了java实现http请求工具类示例,需要的朋友可以参考下
    2014-05-05
  • Spring Security认证机制源码层探究

    Spring Security认证机制源码层探究

    SpringSecurity是基于Filter实现认证和授权,底层通过FilterChainProxy代理去调用各种Filter(Filter链),Filter通过调用AuthenticationManager完成认证 ,通过调用AccessDecisionManager完成授权
    2023-03-03
  • Java Stream流知识总结

    Java Stream流知识总结

    这篇文章主要介绍了Java Stream流的相关知识,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 从 JVM 中深入探究 Synchronized作用及原理

    从 JVM 中深入探究 Synchronized作用及原理

    这篇文章主要为大家介绍了从 JVM 中深入探究 Synchronized作用及原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 浅谈JSON的数据交换、缓存问题和同步问题

    浅谈JSON的数据交换、缓存问题和同步问题

    这篇文章主要介绍了浅谈JSON的数据交换、缓存问题和同步问题,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • 学习Java正则表达式(匹配、替换、查找)

    学习Java正则表达式(匹配、替换、查找)

    这篇文章主要介绍了Java正则表达式的匹配、替换、查找和切割等操作,对于正则表达式的匹配、替换大家已经不陌生了吧
    2015-12-12
  • IDEA设置JVM运行参数的方法步骤

    IDEA设置JVM运行参数的方法步骤

    这篇文章主要介绍了IDEA设置JVM运行参数的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Java发送post方法详解

    Java发送post方法详解

    这篇文章主要介绍了Java发送post方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论