查看: 124|回复: 0

Lamda表达式学习笔记二

[复制链接]
发表于 2020-2-16 07:59:56 | 显示全部楼层 |阅读模式
Lamda表达式学习笔记二


lamda表达式----方法引用

上一篇讲到Lamda体就是对函数式接口方法的实现 ,在方法体中我们可能会引用其他方法实现逻辑,以是在lamda体中我们可以直接引用器方法
I 对象::实例方法名
  1. /**     * 对象::实例方法名     */    @Test    public void test6() {        Consumer consumer = (x) -> System.out.println(x);        consumer.accept("->");        Consumer consumer1 = System.out::println;        consumer1.accept("::");    }
复制代码

结果:


II 类名::静态方法名
  1. /**     * 类名::静态方法名     */    @Test    public void test7() {        Comparator comparator = (x, y) -> Integer.compare(x, y);                Comparator comparator1 = Integer::compare;    }
复制代码

III 类名::实例方法名

  1. /**     * 类名::实例方法名     */    public void test8() {        Bifunction biFunction = (x, y) -> x.equals(y);        BiFunction biFunction1 = String::equals;    }
复制代码


结论:1、引用的方法与函数式接口中抽象方法的入参出参保持同等
    2、使用第三种lamda表达式时,只有入参只能为2个且参数列表中第一个参数是类的实例,参数列表中第二个参数是实例方法的参数时才可以用
I,II仅需满足结论1,III需要同时满足结论1和结论2

Lamda表达式----构造器引用
  1. /**     * 类名::构造器     */    @Test    public void test9() {        Supplier studentSupplier = Student::new;        System.out.println("Supplier:" + studentSupplier.get());        Function function = Student::new;        System.out.println("Function:" + function.apply("李四"));        BiFunction biFunction = Student::new;        System.out.println("BiFunction:" + biFunction.apply(10, 150.0));    }
复制代码

结果:
  1. Supplier:Student{name='null', age=null, hight=null}Function:Student{name='李四', age=null, hight=null}BiFunction:Student{name='null', age=10, hight=150.0}Process finished with exit code 0
复制代码

构造器遵循结论1(引用的方法与函数式接口中抽象方法的入参出参保持同等),是根据构造方法的参数数量来匹配构造方法

个人学习,侵删

参考:https://www.bilibili.com/video/av62117143

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?用户注册

x

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表