当前位置: 首页 > news >正文

java记录-lambda表达式、接口应用、方法引用

基本形式

(str)->{System.out.println(str)
};

调用作为参数的接口实例的方法

1、用一个类实现接口,然后使用该类实例调用方法
2、匿名内部类
3、在 接口(不能是抽象类) 有且只有一个抽象方法时,可以使用lamda表达式来重写这个方法,JAVA会自动生成一个对应的匿名实现类
ps.有且只有一个抽象方法的接口称为函数式接口
参数类型可以省略,JVM会自己去接口里根据方法声明确定类型

public class Main {public static void main(String[] args) throws IOException {useEatable((how)->{System.out.println(how);return true;});}private static void useEatable(Eatable e){boolean success = e.eat("我吃了很多");System.out.println(success);}
}interface Eatable{public boolean eat(String how);
}

也可以直接用lambda表达式直接造一个匿名的接口实现类的实例

Eatable e = (how)->{System.out.println(how);return true;
};

lambda表达式和匿名内部类的区别

  1. 匿名内部类可以作为具体类、抽象类或接口的子类实例
  2. lambda表达式只能做接口的匿名实现类实例
  3. 函数式接口可以使用lambda表达式或匿名内部类,如果有多个抽象方法只能用匿名内部类

方法引用

函数式接口的匿名实现非要用lambda表达式或者匿名内部类吗?它们真的很冗余
如果有已经存在的方法可以实现重写方法的功能时,可以直接用方法引用

方法引用符 ::

useEatable(s->System.out.println(s));
简化成
useEatable(System.out::println);
jvm把引用当方法实现作为重写方法的实现并且创建一个匿名的函数式接口实现类实例,参数信息它自己推导

引用类静态方法

Integer::parseInt

引用特定对象的方法

"Hello World"::toUpperCase

引用类的任意对象的方法

useMyString((s,start,end)->s.substring(x,y));
等同于
useMyString(String::substring);
lambda表达式的第一个参数视为调用方法的实例,后面的参数都是输入方法的参数

引用构造器

String::new

相关文章:

java记录-lambda表达式、接口应用、方法引用

基本形式 (str)->{System.out.println(str) };调用作为参数的接口实例的方法 1、用一个类实现接口,然后使用该类实例调用方法 2、匿名内部类 3、在 接口(不能是抽象类) 有且只有一个抽象方法时,可以使用lamda表达式来重写这个…...

AI写作机器人-ai文章生成器在线

使用AI续写生成器,让内容创作事半功倍! 随着人工智能技术的不断进步和应用,AI续写生成器的出现为内容创作带来了全新的革命。这种技术可以让你的写作事半功倍,让你轻松生成高质量的文章和内容。在这篇文章中,我们将介绍…...

HarmonyOS原子化服务卡片整改、下架、升级失败部分原因及处理办法

随着HarmonyOS应用体系相关规则、团队的不断发展和完善,早期上架运营的HarmonyOS原子化服务卡片,很多都收到了整改、下架的通知,主要集中在用户协议、隐私声明、服务卡片的设计规范性等细节方面的问题;需要进行优化调整升级才行。…...

博客系统测试报告【可上线】

目录 1、测试概述 1.1、项目名称 1.2、测试时间 1.3、编写目的 1.4、测试范围 2、测试计划 2.1、测试用例 2.1.1、注册/登录模块 2.1.2、个人中心模块 2.1.3、找回密码模块 2.1.4、博客主列表模块 2.1.5、个人博客列表模块 2.1.6、个人草稿列表模块 2.1.7、博客详…...

shell中的for循环和if判断

一.编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用户输入,例如: test1、test2、test3、.....、 test10 1.创建脚本for1.sh [rootserver ~]# vim for1.sh 2.编写脚本for1.sh 3.执行脚本for1.sh [roo…...

【Unity入门】16.脚本引用组件

【Unity入门】脚本引用组件 大家好,我是Lampard~~ 欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)脚本引用普通组件 (1)点击控制音频播放 还记得我们的车载音乐AudioSource吗?…...

无线蓝牙耳机哪款音质好?目前音质最好的无线蓝牙耳机推荐

现如今,蓝牙耳机已经是一个非常实用且常见的数码产品了,不少人喜欢戴着蓝牙耳机听歌,玩游戏。一款音质好的蓝牙耳机不止能听个响,还能给人极致的听觉享受。在此,我来给大家分享几款目前音质最好的无线蓝牙耳机&#xf…...

【云原生进阶之容器】第六章容器网络6.6.1--Cilium网络方案概述

《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述...

集中式版本控制工具 —— SVN

一、简介 1️⃣ SVN 是什么? 代码版本管理工具他能记住每次的修改查看所有的修改记录恢复到任何历史版本恢复已经删除的文件 2️⃣ SVN 与 Git 相比有什么优势? 使用简单、上手快目录级权限控制,企业安全必备子目录 Checkout,…...

【Dom获取属性操作】JavaScript 全栈体系(十)

Web APIs 第四章 操作元素属性 一、操作元素常用属性 还可以通过 JS 设置/修改标签元素属性&#xff0c;比如通过 src更换 图片最常见的属性比如&#xff1a; href、title、src 等语法&#xff1a; 对象.属性 值 <!DOCTYPE html> <html lang"en">&…...

C# 中的多态和虚方法,如何实现多态和使用虚方法?

在 C# 中&#xff0c;多态&#xff08;Polymorphism&#xff09;是面向对象编程的基本特性之一&#xff0c;它允许使用不同的对象和方法来执行同一操作。C# 中实现多态的方式主要是通过虚方法和抽象类。 虚方法是一种允许子类覆盖的方法&#xff0c;它的实现是在运行时动态确定…...

R软件使用一些常见的问题

以下均是个人经验摸索的解决办法&#xff0c;使用 Rstudio 执行命令&#xff0c;如有高手能更好地解决问题&#xff0c;还望指教&#xff0c;提前感谢。 问题一&#xff1a; 有些 package 因为编辑得比较早又没有继续更新&#xff0c;所以需要用旧版本的 R 才能正常运行&#…...

为什么需要uboot?

一、先看概念 bootROM&#xff1a;一种固化在芯片内部的只读存储器&#xff08;ROM&#xff09;&#xff0c;用于启动和初始化系统。BootROM 中通常包含了一些预先编写好的代码&#xff0c;用于完成系统启动前的基本初始化和配置&#xff0c;例如初始化时钟、GPIO控制器、中断…...

Qt布局实战:实现高效、美观的GUI应用程序

Qt布局实战&#xff1a;实现高效、美观的GUI应用程序 引言 (Introduction)1.1 Qt布局简介 (Brief introduction to Qt layouts)1.2 Qt布局的优势 (Advantages of Qt layouts) 2.布局类型 (Layout Types)2.1 水平布局 (QHBoxLayout)2.1.1 创建水平布局2.1.2 向水平布局中添加部件…...

推荐几款项目管理工具,提高你的团队协作效率

如何管理团队才能使团队发挥最大的价值&#xff0c;如果团队缺少协作&#xff0c;就会因为团队的内耗和冲突导致项目无法完成&#xff0c;如何提高团队协作效率呢&#xff1f;我们可以借助团队协作类的项目管理工具。 几个常见的项目管理工具&#xff1a; 1、进度猫 进度猫是…...

SQL101 检索每个顾客的名称和所有的订单号(一)

描述 Customers表代表顾客信息含有顾客id cust_id和 顾客名称 cust_name cust_idcust_namecust10andycust1bencust2tonycust22tomcust221ancust2217hex Orders表代表订单信息含有订单号order_num和顾客id cust_id order_numcust_ida1cust10a2cust1a3cust2a4cust22a5cust221…...

mac压缩文件多了__MACOSX目录问题

文章目录 背景原因解决方案&#xff1a;更换压缩方式分析问题拓展&#xff08;.DS_Store&#xff09; 背景 项目中有一个场景&#xff0c;需要把目录压缩为app离线包的zip 但是压缩之后一致打不开&#xff0c;别人上传的zip是好的 原因 如图&#xff0c;我上传的在安卓设备…...

1.17 从0开始学习Unity游戏开发--场景切换

前面的所有文章我们都在一个固定的游戏场景内进行开发&#xff0c;在最开始介绍场景这个概念的时候就已经提及&#xff0c;这个场景可以是一张地图&#xff0c;或者是一个对战房间等等&#xff0c;所以显然这个场景可以有多个&#xff0c;并且可以从一个场景切换到另外一个场景…...

【golang学习笔记】——(五)Go格式化统一代码风格

我们在入职一家新公司的时候&#xff0c;除了要学习公司的流程规范和规章制度&#xff0c;还会做的一件事情就是进行公司编码规范的学习&#xff0c;基于google的C规范下&#xff0c;做了各自的发散和规范&#xff0c;久而久之就是包罗万象的样子&#xff0c;疲于应付各种规范约…...

CAD转SHP最好的方法 赶快收藏起来吧

1、利用 ArcToolsbox 工具先将 DWG 文件转为 MDB 通过 CASS 软件生成的 DWG 文件&#xff0c;字段中包含有很多属性内容&#xff0c;所以我们先将 DWG 格式 的文件转换为 MDB 格式&#xff0c;再通过 MDB 转换为 SHP 格式数据进行整理。具体步骤如下&#xff1a; 通过 ArcTool…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

Python第七周作业

Python第七周作业 文章目录 Python第七周作业 1.使用open以只读模式打开文件data.txt&#xff0c;并逐行打印内容 2.使用pathlib模块获取当前脚本的绝对路径&#xff0c;并创建logs目录&#xff08;若不存在&#xff09; 3.递归遍历目录data&#xff0c;输出所有.csv文件的路径…...