方法引用

方法引用

方法引用

三种语法格式:

  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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Depix初体验

    Depix初体验前情提要这几天有一个同学给我发了一张马赛克图,问我能不能还原?图片如上。我一看,这被马成什么鬼样子了,谁能还原得了?不过我忽然想到,我在公众号上看到一个名字叫做”Depix”的Github项目。然而近期在Github上,又出现了一款号称能抹去马赛克让原图重现的神器,引发海内外热议。这款工具名为Depix,上线没几天就在GitHub上标星已超过一万多,截止目前累计分支也超过了1.3k个。让它火出圈子的,就是下面这张效果图:如图所示,第一行是打了一层巨厚马赛克完全像素化后的文本内容,看不出

  • Android学习之Toast遇到的问题(Toast弹窗不显示,多次点击控件且执行一次弹窗)

    Android学习之Toast遇到的问题(Toast弹窗不显示,多次点击控件且执行一次弹窗)Android学习之Toast遇到的问题及解决办法问题一:代码无问题,Toast弹窗不显示最近在学习Toast对象的时候,用AndroidStudio模拟机去看样式时,弹窗竟然不显示,因为之前都是显示的突然就不显示了,上网搜了一哈找到解决办法–1–换一个模拟机去调试2–清除一下模拟机的缓存(这个挺好用,每次用着用着不显示弹窗的时候我就去清除一下缓存就可以了)**图解如下**找到AVDManager选择你使用的模拟机,在右边小三角里下拉列表中找到WipeDate清除缓存就好啦

  • databus教程_搭建区观察记录表

    databus教程_搭建区观察记录表最近公司因需要同步oracle数据到mysql,调研了Datax对于大数据量的同步代价有些大。开源的databus需要对源码做二次开发,才可以使用,前期我们搭建后,用自带的person表做了测试。确认可行后研发更改了源码。准备工作:1.配制gradle和java2.ojdbc6-11.2.0.2.0.jar放到如下目录:databus-master/sandbox-repo/com/oracle/ojdbc6/11.2.0.2.0/更改defaultEnvironment.gradl

  • 分布式缓冲之memcache

    1.memcache简介memcache是danga.com的一个项目,它是一款开源的高性能的分布式内存对象缓存系统,,最早是给LiveJournal提供服务的,后来逐渐被越来越多的大型网站所采用

    2021年12月28日
  • 1150针cpu性能排行_最新 cpu天梯图 2020 单核多核 排行榜

    先贴一个著名的CPU-Z软件给出的单线程性能排行榜(2020.6)相当于单核排行榜。这里排行第一的是i7-9700K,甚至比i9-9900K还要强一些。当然这仅是一家之言,我们再贴一个PassMark的单核排行榜这里加入最新的i9-10900K排名第一,i9-9900KS>i9-9900K>i7-9700K单其实分数差距非常小。都是非常强的CPU。我们再来看…

  • Labelimg制作数据集

    Labelimg制作数据集Labelimg制作数据集1、安装labelimg①下载源码自行安装,安装步骤参考搜索文章下载地址:https://github.com/tzutalin/labelImg②下载打包版直接运行,Windows和Linux平台可用,无需编译下载地址:http://tzutalin.github.io/labelImg/2、图片标注①仿照VOC2007在py-faster-rc…

发表回复

您的电子邮箱地址不会被公开。

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