加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java8 方法引用

发布时间:2020-12-14 06:40:47 所属栏目:Java 来源:网络整理
导读:概述 方法引用是用来直接访问类或实例阴茎存在的方法或者构造方法.它需要由兼容的函数式接口(lambda表达式中用到的接口)构成的目标类型上下文. 有时候,当我们想要实现一个函数式接口的方法,但是已经由类实现了我们想要的功能,这时可以使用方法引用来直接使用

概述

方法引用是用来直接访问类或实例阴茎存在的方法或者构造方法.它需要由兼容的函数式接口(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);
Java8 方法引用

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);
Java8 方法引用

3.构造方法引用

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

类名::new

方法引用与lambda表达式:

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


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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读