方法引用

方法引用

方法引用

三种语法格式:

  1. 对象::实例方法名
  2. 类::静态方法名
  3. 类::实例方法名

注意:是要实现的方法和接口的抽象方法的返回值和参数列表必须相同

1.对象::实例方法名

@Test
public void test(){
    //lambda表达式
    Consumer<Integer> consumer = (x)-> System.out.println(x);
    //方法引用 写法
    Consumer<Integer> consumer2 = System.out::println;
    consumer2.accept(10);
}

2.类名::实例方法名

注意:如果函数接口的参数列表为两个,第一个参数为实例方法的调用者,第二个参数为实例方法的实参,则可以使用该方法引用

如x.equals(y)

@Test
public void test1(){
    BiPredicate<String ,String> flag = (x,y)->x.equals(y);
    //等价于
    BiPredicate<String ,String> flag2 = String::equals;
    boolean test = flag2.test("345", "345");
    System.out.println(test);
}

3.类名::静态方法名

注意:构造器的选择取决于接口的方法参数列表,

如Supplier对应的supplier.get()方法就是没有参数,因此就是调用无参构造。

/*
*构造器引用
*/
@Test
public void test2(){
    Supplier<TestClass> supplier = ()->new TestClass();
    //等价于
    Supplier<TestClass> supplier1 = TestClass::new;
}
class TestClass{
    private int num;
    public TestClass() {
    }
}

/**
 * 数组的引用
 */
    @Test
public void test3(){
    Function<Integer,String[]> function = (Integer)->new String[Integer];
    //等价于
    Function<Integer,String[]> function2 = String[]::new;
    String[] strings = function2.apply(10);
    System.out.println(strings.length);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115172.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月12日 下午4:00
下一篇 2021年11月12日 下午5:00


相关推荐

  • IIS Web服务器的安装与配置

    IIS Web服务器的安装与配置1 打开控制面板 搜索 程序与功能 2 点击进入 程序和功能 选择 启用和关闭 Windows 功能 3 点击 启用或关闭 Windows 功能 弹出小窗口 找到 InternetInfo 选择如下图的配置 4 点击确定 等待安装成功 5 安装成功后 打开 c 盘找到 inetpub 文件夹 6 点击进入 inetpub 找到 wwwroot 文件夹 7 点击进入 wwwroot 这里放你想浏览的

    2026年3月17日
    2
  • 手机自动刷视频方法教程_自动刷视频软件手机版

    手机自动刷视频方法教程_自动刷视频软件手机版现在手机刷视频赚钱的软件有很多1、淘宝直播2、刷宝短视频3、快手…这些软件都有一个限制,如果不是一直在看视频的话,元宝是不能领取的。也就是说必须不停的刷视频才可以领元宝。但如果人工刷的话

    2022年8月4日
    6
  • 永磁直流无刷电机驱动器_永磁直流无刷电机的优缺点

    永磁直流无刷电机驱动器_永磁直流无刷电机的优缺点现实生活中我们接触的电机包括很多种类,除部分特殊种类外,永磁电机均是利用定子与转子磁场相互作用的原理制成。其中,使用直流电源驱动的电机称为直流电机,直流电机又可细分为直流有刷电机和直流无刷电机(BLDC)。电刷,是区分“有刷”与“无刷”电机的关键,它是与换向器组合使用的电机组件,常见材质为金属和碳。带有换向器和电刷的电机称为有刷电机,使用电子电路实现换向功能的电机称为无刷电机。直流有刷电…

    2022年10月21日
    3
  • Q-学习:强化学习「建议收藏」

    Q-学习:强化学习「建议收藏」原文地址:http://mnemstudio.org/path-finding-q-learning-tutorial.htm这篇教程通过简单且易于理解的实例介绍了Q-学习的概念知识,例子描述了一个智能体通过非监督学习的方法对未知的环境进行学习。假设我们的楼层内共有5个房间,房间之间通过一道门相连,正如下图所示。我们将房间编号为房间0到房间4,楼层的外部可以被看作是一间大房间,编号为5。注

    2026年4月13日
    6
  • laravel 5.5 登录验证码 captcha 引入

    laravel 5.5 登录验证码 captcha 引入

    2021年10月26日
    54
  • js全局变量详解

    js全局变量详解前言本文主要介绍3种全局变量的定义方式以及开发中会遇到的一些问题,再加上一点个人见解。首先简单的介绍一下3种全局变量的定义方式vara=1;//方式1b=2;//方式2window.c=3;//方式3这3种形式定义出来的全局变量都属于window对象对于方式1我们都不陌生,方式3也看过不少,方式2的隐似创建方式我们或多或少都干过,例如vara=1;funct

    2022年6月9日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号