方法引用

方法引用

方法引用

三种语法格式:

  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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • STM32 看门狗详解

    STM32 看门狗详解目录1、IWDG1.1独立看门狗简介1.2独立看门狗的特点1.3独立看门狗功能描述1.4硬件看门狗1.5寄存器访问保护1.6调试模式2、WWDG2.1简介2.2窗口看门狗主要特点2.3窗口看门狗功能说明2.4如何设置看门狗超时2.5调试模式3、区别1、IWDG1.1独立看门狗简介IWDG(Independentwatchdog)独立看门狗,可以用来检测并解决由于软件错误导致的故障,当计数器到达给定的超时值时,会触发

    2022年4月29日
    78
  • Apache和Nginx有什么区别

    Apache和Nginx有什么区别Apache和Nginx最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;而nginx是异步的,多个连接(万级别)可以对应一个进程。区别:Apacheapache的rewrite比nginx强大,在rewrite频繁的情况下,用apacheapache模块多apache更为成熟,少bugapache超稳定apache对PHP支持比较交单,nginx需要配合其他后端用apche在处理动态请求有优势,nginx在这方面是鸡肋,一般动态请求用apache去做,nginx适合静态

    2022年5月7日
    36
  • ubuntu完全卸载CUDA

    ubuntu完全卸载CUDACUDA的卸载方法网上都有很多,但是几乎都是错的,我在卸载cuda时基本试了个遍,各种踩坑。能查到的方法一般都是从官方文档搬过来的,然而这种方法并不能将cuda完全卸掉。这里把官方文档的方法贴出来:sudoapt-get–purgeremove”*cublas*””*cufft*””*curand*”\”*cusolver*””*cusparse*””*npp*””*nvjpeg*””cuda*””nsight*”我运行过这个命令,运行完之后,命令行输入nvcc-

    2022年5月30日
    78
  • 凯福德金业(香港)荣获“最佳贵金属交易平台”大奖

    凯福德金业(香港)荣获“最佳贵金属交易平台”大奖凯福德金业(香港)荣获“最佳贵金属交易平台”大奖 “2013年度第二届资本力量百强榜评选”中,凯福德金业凭借其在推动贵金属行业发展中作出的努力与贡献,成功入选“2013资本力量百强”并被授予“最佳贵金属交易平台”大奖。2014年2月,证券之星2013年第二届“资本力量百强榜颁布盛典”在上海如期举行。此次评选由中国著名财经资讯网站证券之星主办,联合复旦大学管理学院、证监会、上市公司联合会、逾

    2022年6月16日
    35
  • 治疗治愈埃博拉病毒(非科幻)

    治疗治愈埃博拉病毒(非科幻)

    2022年1月2日
    66

发表回复

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

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