什么是方法引用?

个人简述方法引用:

方法引用主要是针对已经有的方法来让目前的编程更加简洁

当我们想要使用一个接口的子类的时候,子类需要重写这个接口中的抽象方法,

被重写的这个方法参数列表固定,返回值类型固定,只要将相应的代码被重写的方法即可

因此引入lambda表达式,让我们更加方便简洁的只需要写入方法中的代码即可,其他操作交给jvm来处理,但是lambda表达式需要我们写明参数(和接口中对应方法对应的参数,参数类型可以省略),来方便我们在方法体中对传入参数的使用

方法引用是lambda表达式的升级版本,针对的是当恰好有一个方法(a代表)的功能,参数,返回值和我们想要重写的方法一样,则可以直接引用a来实现,使得代码更加简洁

            使用方法引用只是重构方法,并不是调用方法,

  1. 什么是方法引用?

当我们要编写一个lambda表达式时,发现已经有了一个(或者自己定义了一个)方法实现了我们在lambda中要实现的功能,

这时就可以引用这个已写好的方法,来代替我们的lambda表达式

  1. 方法引用的前提

1).基于lambda,必须可以使用lambda的时候才能判断是否可以使用方法引用

2).引用方法做的事情必须是和我们使用lambda做的事情一样

3).引用的方法的形参、返回值必须和接口中的形参和返回值一样(方法引用式不需要写形参和返回值,jvm自动判定)

            被引用方法形参必须等于    、大于接口中方法的形参类型;

            被引用方法的返回值类型等于、小于接口中方法的返回值类型;

  1. 代码简写过程:

有名字子类à匿名内部类àlambdaàlambda省略格式à方法引用

二.方法引用格式及示例

引用成员方法:

对象名::成员方法名

                           

引用静态方法:

类名::静态方法名

构造引用(有参和无参一样,参数jvm判定)

类名::new

数组构造器引用(数组定义必须指定个数,所以在使用方法引用时,个数会通过方法的形参传入)

数据类型[]::new

 

图形简介:

 示例代码:

package com.ahd.fangfayinyong;

public class Demo01 {
public static void main(String[] args) {
//通过实现三种方法创建线程-----匿名内部类,lambda表达式,方法引用对比来说明
//匿名内部类
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("创建一个线程");
}
}).start(); //通过使用lambda表达式(lambda完整格式)
new Thread((()->{
System.out.println("创建一个线程");
})).start(); //通过使用lambda表达式(lambda省略格式)
new Thread((()-> System.out.println("创建一个线程"))).start(); //通过使用方法引用来实现上述功能
new Thread(System.out::println).start(); }
}

有话想要对你说

java_方法引用的更多相关文章

  1. 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)

    作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-language- ...

  2. Java 8函数编程轻松入门(四)方法引用

    C#中系统提供了许多IEnumerable的扩展方法.同样在Java 8中新引入了Collector类. 1.方法引用 定义: 简而言之:就是一个Lambda表达式.在Java 8中,我们我们会使用L ...

  3. Java笔记——Java8特性之Lambda、方法引用和Streams

    Java8已经推出了好一段时间了,而掌握Java8的新特性也是必要的,如果要进行Spring开发,那么可以发现Spring的官网已经全部使用Java8来编写示例代码了,所以,不学就看不懂. 这里涉及三 ...

  4. Java 8新特性-4 方法引用

    对于引用来说我们一般都是用在对象,而对象引用的特点是:不同的引用对象可以操作同一块内容! Java 8的方法引用定义了四种格式: 引用静态方法     ClassName :: staticMetho ...

  5. Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针

    Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针   1.1. java方法引用(Method References) 与c#委托与脚本语言js ...

  6. JAVA 8 方法引用 - Method References

    什么是方法引用 简单地说,就是一个Lambda表达式.在Java 8中,我们会使用Lambda表达式创建匿名方法,但是有时候,我们的Lambda表达式可能仅仅调用一个已存在的方法,而不做任何其它事,对 ...

  7. [转]深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)

    以下内容转自: 作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-l ...

  8. Swift编程语言中的方法引用

    由于Apple官方的<The Swift Programming Guide>对Swift编程语言中的方法引用介绍得不多,所以这里将更深入.详细地介绍Swift中的方法引用. Swift与 ...

  9. 30分钟入门Java8之方法引用

    30分钟入门Java8之方法引用 前言 之前两篇文章分别介绍了Java8的lambda表达式和默认方法和静态接口方法.今天我们继续学习Java8的新语言特性--方法引用(Method Referenc ...

随机推荐

  1. 开发 chrome 扩展 GitHub-Remarks 的一些想法以及遗憾

    前文 对于单页应用中如何监听 URL 变化的思考 说到我在开发 chrome 扩展 GitHub Remarks 中遇到的一个问题,本文来聊聊开发这个扩展的前后心路历程. 为什么开发这个扩展?前文说到 ...

  2. Boosting(提升方法)之GBDT

    一.GBDT的通俗理解 提升方法采用的是加法模型和前向分步算法来解决分类和回归问题,而以决策树作为基函数的提升方法称为提升树(boosting tree).GBDT(Gradient Boosting ...

  3. ES6--浅析Promise内部结构

    首发地址:sau交流学习社区 一.前言 什么是promise?promsie的核心是什么?promise如何解决回调地狱的?等问题 1.什么是promise?promise是表示异步操作的最终结果:可 ...

  4. Asp.Net Core&Docker部署到树莓派3B中

    花了一点时间将吃灰数月的树莓派装上了Docker,并在容器中部署了一个Asp.Net Core应用程序,通过花生壳映射树莓派中的程序,可以使用外网访问树莓派,玩起来很有意思(外网访问地址:http:/ ...

  5. DSAPI 网页获取本地程序登陆用户

    这是一个非常简单的示例,在网页或其他平台获取程序中已经登陆的用户,当然也可以是其他信息. 源码 Imports DSAPI.网络.HTTP监听_DSWebAPI Public Class Form1 ...

  6. FontAwesome 图标字体库的使用

    在前端开发中,许多新手常会遇见一个问题,参考的网页上有类似下图的图标,但在资源里却找不到对应的文件,这是因为这些网页使用了图标库.这里介绍一种常见的图标库——FontAwesome的使用. 1.登录F ...

  7. C语言中的位段(位域)知识

    在结构体或类中,为了节省成员的存储空间,可以定义某些由位组成的字段,这些字段可以不需要以byte为单位. 这些不同位长度的字段实际存储于一个或多个整形变量.位段成员必须声明为int, signed i ...

  8. Spring之旅第六篇-事务管理

    一.什么是事务 什么是事务(Transaction)?事务是数据库中的概念,是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 有个非常经典的转账问题:A向B转款1000元,A转出成 ...

  9. C# 《编写高质量代码改善建议》整理&笔记 --(五)类型设计

    1.区分接口和抽象类的应用场合 区别: ①接口支持多继承,抽象类则不能. ②接口可以包含方法,属性,索引器,事件的签名,但不能有实现,抽象类则可以. ③接口在增加新方法后,所有的继承者都必须重构,否则 ...

  10. SpringBoot整合Swagger2,再也不用维护接口文档了!

    前后端分离后,维护接口文档基本上是必不可少的工作.一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理想的状态,实际开发中却很 ...