概述

方法引用是用来直接访问类或实例阴茎存在的方法或者构造方法.它需要由兼容的函数式接口(lambda表达式中用到的接口)构成的目标类型上下文. 有时候, 当我们想要实现一个函数式接口的方法, 但是已经由类实现了我们想要的功能, 这时可以使用方法引用来直接使用现有的功能实现.

关于lambda表达式可以看上一篇文章

当lambda表达式只是执行一个方法调用时, 直接通过方法引用的形式调用. 方法引用是一种更简洁的lambda表达式.

方法引用是lambda表达式的简写, 提高了代码可读性. 可以看出来, 方法引用就是用已经实现的方法来实现lambda表达式中的实现, 所以引用的方法要满足以下要求:

  1. 引用的方法的参数列表必须与实现的抽象方法参数列表保持一致.

使用

因为方法引用是简写的lambda表达式, 所以类比即可.

方法引用的语法为:

类或对象名::方法名或new

通过引用即可引用指定类或对象的指定方法

分类

下面介绍以下几种不同的方法引用.

1.静态方法引用

顾名思义, 静态方法引用就是引用类的静态方法, 语法为:

类名::静态方法名

方法引用与lambda表达式:

String::valueOf 等价于 s -> String.valueOf(s);
Math::pow 等价于 (x,y) -> Math.pow(x,y);

2.实例方法引用

顾名思义,实例方法引用就是引用对象实例的方法, 语法为:

对象实例::方法名

方法引用与lambda表达式:

String str = "aaaaaaaaaaa";
// 若实例方法要通过对象来调用, 第一个参数会成为调用实例方法的对象, 后面的参数为调用方法的参数
String::length 等价于lambda表达式 s -> s.length();
String::equals 等价于lambda表达式 (s1,s2) -> s1.equals(s2);
// 若实例方法为this或super, 参数会成为调用方法的参数
this::equals 等价于lambda表达式 s -> this.equals(s);
super::equals 等价于lambda表达式 s -> super.equals(s);

3.构造方法引用

顾名思义, 构造方法引用就是引用类的构造方法, 语法为:

类名::new

方法引用与lambda表达式:

// 会根据参数寻找合适的构造方法
String::new 等价于lambda表达式 s->new String(s);也等价于 ()->new String();
// 同时也可以创建数组
int[]::new 等价于lambda表达式 x->new int[x];


关于方法引用的更多可以自己进行尝试

Java8 方法引用相关推荐

  1. java8方法引用符合_java8,方法引用

    当我们使用lambda表达式去创建一个匿名方法时,有时我们并没有做什么事情,仅仅是使用了对象中一个存在的方法.这种情况下,通过对象的方法名就能够很明显的推断出要使用 的方法,java8中的方法引用能够 ...

  2. Java8————方法引用

    译者注:本篇博客翻译自Oracle官方教程<Method References>.作为Java 8 新特性Lambda表达式的引申概念,博主依然采用官方文档的方式来学习这一重要的概念.希望 ...

  3. java8 方法引用详解_Java8中如何通过方法引用获取属性名详解

    前言 在我们开发过程中常常有一个需求,就是要知道实体类中Getter方法对应的属性名称(Field Name),例如实体类属性到数据库字段的映射,我们常常是硬编码指定 属性名,这种硬编码有两个缺点. ...

  4. java8 方法引用好处_Java 8方法引用

    原标题:Java 8方法引用 方法引用有助于通过名称指向方法.使用"::"符号描述方法引用.方法引用可以用来指出以下类型的方法 - 静态方法 实例方法 使用new运算符的构造函数( ...

  5. java8方法引用符合_Java8 方法引用和构造方法引用

    如果不熟悉Java8新特性的小伙伴,初次看到函数式接口写出的代码可能会是一种懵逼的状态,我是谁,我在哪,我可能学了假的Java,(・∀・(・∀・(・∀・*),但是语言都是在进步的,就好比面向对象的语言 ...

  6. Java8 方法引用和Stream流

    Stream 流API 什么是流 流的操作种类 流的操作过程 使用流 创建流 集合 数组 值 筛选 filter 去重 distinct 截取 limit 跳过 skip 映射 map 合并多个流 是 ...

  7. 【java8新特性】——方法引用(四)

    一.简介 方法引用是java8的新特性之一, 可以直接引用已有Java类或对象的方法或构造器.方法引用与lambda表达式结合使用,可以进一步简化代码. 来看一段简单代码: public static ...

  8. 引用java8里的方法_Java8中方法引用的使用详解

    1. 引言 Java8中最受广大开发中喜欢的变化之一是因为引入了 lambda 表达式,因为这些表达式允许我们放弃匿名类,从而大大减少了样板代码,并提高了可读性. 方法引用是lambda表达式的一种特 ...

  9. 【Java8新特性】浅谈方法引用和构造器引用

    写在前面 Java8中一个很牛逼的新特性就是方法引用和构造器引用,为什么说它很牛逼呢?往下看! 方法引用 当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!这里需要注意的是:实现抽 ...

最新文章

  1. Java项目:无库版银行管理系统(java+Gui+文档)
  2. CentOS6.8下安装JDK1.8
  3. Day 6:在 Java 虚拟机上使用 Grails 进行快速 Web 开发
  4. 数据中台建设中的得与失
  5. Android进阶篇之引导页系列之ViewPager实现Animation动画引导页
  6. rman备份,crontab计划任务没有生成备份文件
  7. javascript笔记整理(对象基础)
  8. 伪静态设置php,php伪静态设置
  9. 【基础】深入浅出神经网络基础
  10. c# 开发项目的过程
  11. 在oracle表中增加字段,并调整字段的顺序
  12. 电视助手 Android,无屏助手TV版|无屏助手电视版 V4.0.3 安卓版 下载_当下软件园_软件下载...
  13. 备战数学建模22-数学建模论文写作规范总结
  14. 「第六篇」0day漏洞
  15. Microsoft Visual Studio 2013产品激活密钥
  16. Spring 专业认证考试学习指南
  17. 【STM32】按键抖动及消除
  18. oracle中文名转拼音,oracle 汉字转拼音
  19. 如何成为一名优秀的程序员(五)
  20. 部分仿真软件对比介绍

热门文章

  1. 改进初学者的PID-介绍
  2. 对称加密算法原理与常用实现
  3. file 选择的图片作为背景图片_酷炫!用Python把桌面变成实时更新的地球图片
  4. 12v小型电机型号大全_电机型号参数大全
  5. 离群点检测方法_干货 :时间序列异常检测
  6. hystrix原理_面试必问的SpringCloud实现原理图
  7. 职业高中计算机网络试讲稿,2021教师资格证考试面试高中信息技术试讲稿——《建立数据库的基本过程》...
  8. 中国石油大学(华东)计算机科学与技术,2017年中国石油大学(华东)函授本科计算机科学与技术专业...
  9. c语言文件读写r 的作用,C语言 读写二进制文件
  10. Java设计模式之迭代器模式