Lamda表达式学习笔记二

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

上一篇讲到Lamda体就是对函数式接口方法的实现 ,在方法体中我们可能会引用其他方法实现逻辑,所以在lamda体中我们可以直接引用器方法

I 对象::实例方法名

/**
* 对象::实例方法名
*/
@Test
public void test6() {
Consumer<String> consumer = (x) -> System.out.println(x);
consumer.accept("->");
Consumer<String> consumer1 = System.out::println;
consumer1.accept("::");
}

结果:

II 类名::静态方法名

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

III 类名::实例方法名

/**
* 类名::实例方法名
*/
public void test8() {
BiFunction<String, String, Boolean> biFunction = (x, y) -> x.equals(y);
BiFunction<String, String, Boolean> biFunction1 = String::equals;
}

结论:1、引用的方法与函数式接口中抽象方法的入参出参保持一致

    2、使用第三种lamda表达式时,只有入参只能为2个且参数列表中第一个参数是类的实例,参数列表中第二个参数是实例方法的参数时才可以用

I,II仅需满足结论1,III需要同时满足结论1和结论2

Lamda表达式----构造器引用

/**
* 类名::构造器
*/
@Test
public void test9() {
Supplier<Student> studentSupplier = Student::new;
System.out.println("Supplier:" + studentSupplier.get());
Function<String, Student> function = Student::new;
System.out.println("Function:" + function.apply("李四"));
BiFunction<Integer, Double, Student> biFunction = Student::new;
System.out.println("BiFunction:" + biFunction.apply(10, 150.0)); }

结果:

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

Lamda表达式学习笔记二的更多相关文章

  1. Lamda表达式学习笔记一

    Lamda表达式学习笔记一 一.Lamda语法诠释 三傻大闹宝莱坞的主人公兰彻说的一句话让我映像深刻:用简单的语言来表达同样的意 我并不是说书上的定义怎么怎么不对,而是应该理解书本上的定义,并用简单的 ...

  2. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  3. ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  4. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0.zfill()方法语法:s ...

  5. 微信小程序学习笔记二 数据绑定 + 事件绑定

    微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...

  6. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  7. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  8. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  9. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

随机推荐

  1. 存储引擎,MySQL中的数据类型及约束

    存储引擎,MySQL中的数据类型及约束 一.存储引擎 1.不同的数据应该有不同的处理机制 2.mysql存储引擎 ​ Innodb:默认的存储引擎,查询速度叫myisam慢,但是更安全 ​ 支持事务, ...

  2. hibernate并发时的事务处理

    两个方法 方法一: public void saveTest() { try { System.out.println("saveTest start"); User user = ...

  3. Java面向对象编程 -6.4

    二维数组 数组的定义格式 数组的动态初始化:初始化之后数组中的每一个元素的保存的内容为其对应数据类型的默认值 声明并初始化数组: 数据类型 数组名称 [][] = new 数据类型[行个数][列个数] ...

  4. 初始Linux软硬链接

    转载 https://blog.csdn.net/libaineu2004/article/details/85918682 用实践让你明白"软链接"和"硬链接" ...

  5. 【译】高级T-SQL进阶系列 (四)【上篇】:使用游标进行行级别处理

    [译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 正常来说,使用游标并不是处理记录集的最佳方式.然而当一个经验丰富的程序员第一次开始写TSQL时,他们经常会寻找其 ...

  6. MySQL基本查询

    1.查询某数据库中表的总数 select count(*) from information_schema.tables where table_schema='dbname'; 2.仅占一列显示某数 ...

  7. php概率

    /*  * 经典的概率算法,  * $proArr是一个预先设置的数组,  * 假设数组为:array(100,200,300,400),  * 开始是从1,1000 这个概率范围内筛选第一个数是否在 ...

  8. 微信+QQ跳转

    加到对应页面的</body> 上面,或者<head> </head>之间 <script type="text/javascript"&g ...

  9. Python - 私有属性(双下线的变形)

    __x会自动变形为_类名__x 正常情况 class A: def foo(self): print('from A') def test(self): self.foo() class B(A): ...

  10. 基于SLAM的移动机器人硬件设备参数

    1.移动机器人底盘 移动底盘有多大 长宽高:35*35*40cm 移动底盘有多重 17kg 底盘最大载重是多少 40kg 底盘最大速度是多少 1.2m/s 底盘的电池是多大 24V/7.8A 锂离子电 ...