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. RTU license

    Right to Use (RTU) licensing is a model in which licenses are not tied to a unique device identifier ...

  2. Jenkins+Maven+Github+Springboot实现可持续自动部署(非常详细)

    目前公司开发的项目已经部署到服务器上,部署项目的测试环境和生产环境,加上每个项目n个服务,于是我就 , 骚就是骚,但是就是太累了,于是花点时间研究了一下Jenkins. Jenkins的作用和它的lo ...

  3. web前端安全性

    跨站脚本攻击(XSS攻击) XSS(Cross Site Scripting),跨站脚本攻击.XSS是常见的Web攻击技术之一.所谓的跨站脚本攻击指得是:恶意攻击者往Web页面里注入恶意Script代 ...

  4. Django 实现下载功能时中文文件名问题

    先上最终解决代码(有待验证各浏览器效果): def download_file(request, file_path): file_name = os.path.basename(file_path) ...

  5. 「NOIP2013」货车运输

    传送门 Luogu 解题思路 首先 \(\text{Kruskal}\) 一下,构造出一棵森林. 并查集还要用来判断连通性. 倍增 \(\text{LCA}\) 的时候顺便维护一下路径最小值即可. 细 ...

  6. ASP.NET(C#) Json序列化反序列化帮助类Jsonhelper

    原文地址:https://ken.io/note/csharp-asp.net-jsonhelper using System; using System.Collections.Generic; u ...

  7. Linux学习:进入与退出系统

    进入Linux系统:必须要输入用户的账号,在系统安装过程中可以创建以下两种帐号: 1.root--超级用户帐号(系统管理员),使用这个帐号可以在系统中做任何事情. 2.普通用户--这个帐号供普通用户使 ...

  8. PyQt5窗口操作大全

    1.多窗口交互-使用信号与槽函数'''如果一个窗口和一个窗口交互,尽量不要访问窗口B的控件:应该访问与信号绑定的槽函数,从而降低窗口之间的耦合度 例:如果A直接访问B窗口的控件,一旦B窗口的控件发生改 ...

  9. Install fail! Error: EBUSY: resource busy or locked, symlink

    前些日子从github上下载了一个项目 然后放在桌面上  ,但是运行的时候 报了Install fail! Error: EBUSY: resource busy or locked, symlink ...

  10. 22 严格模式&this关键词&let&const

    严格模式: ECMA5后的新指令:"use strict" 它不算一条语句,而是一段文字表达式,更早版本的JavaScript会忽略它. 严格模式无法使用未声明的变量. 严格模式的 ...