19 lambda表达式的简化过程

news/2025/10/27 21:14:31/文章来源:https://www.cnblogs.com/miloandmicah/p/19170184

Lambda表达式

为什么引入lambda表达式?

  1. 避免内部类定义过多
  2. 去掉无意义代码,只留下核心逻辑

函数式接口

定义:任何借口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。

对于函数式接口,可以通过lambda表达式来创建该接口的对象。

public class lambda {//3.静态内部类,把刚才实现的内部类粘贴过来加上static关键字static class micah2 implements milo{@Overridepublic void lam() {System.out.println("milo is working,too...");}}public static void main(String[] args) {milo m =new micah();m.lam();micah2 m1=new micah2();m1.lam();//4.局部内部类class micah3 implements milo {@Overridepublic void lam() {System.out.println("milo is working...3");}}micah3 m2=new micah3();m2.lam();//5.匿名内部类,没有类的名称,必须借助接口或者父类实现m= new milo() {@Overridepublic void lam(){System.out.println("milo is working...4");}};m.lam();/*************************///用lambda简化//!!!需提前将m声明为接口类型 在最上方有一个句子:milo m =new micah();m = () -> {System.out.println("milo is working...5");};//后续需要调用!lambda只起到一个实现接口的作用m.lam();}}//1.定义函数式接口
interface milo{void lam();
}//2.实现类
class micah implements milo{@Overridepublic void lam() {System.out.println("milo is working...");}
}

从2到5是一个不断简化的过程,在简化的过程中,实现单一功能的类,由常见的外部定义、实例化,到静态内部定义与实例化,再到成为一个局部类,成为一个匿名内部类,最后使用lambda表达式完成完全的简化,无需类定义即可完成对单一函数接口的实现,极大简化了代码量,并且无需查找上下文,一目了然。

在实现匿名内部类时,也会提示:

屏幕截图 2025-10-27 203730

lambda的继续简化

是的,lambda在简化了函数型接口的实现后,自己还能继续简化。

public class lambda2 {public static void main(String[] args) {//lambda 表示简化merry m = (int a)->{System.out.println("Merry Christmas!"+a);};//no 1. 简化参数类型m = (a)->{System.out.println("Merry Christmas!"+a);};//no 2. 简化括号m = a -> {System.out.println("Merry Christmas!"+a);};//no 3. 简化大括号 (代码只有一行)m = a -> System.out.println("Merry Christmas!"+a);m.merrychris(2);}
}
interface merry{public void merrychris(int a);
}

仅有一行代码时才可以对大括号进行简化

多个参数也可以去掉参数类型,但是要雨露均沾,不能独宠。且必须加上括号!

lambda表达式只能用于简化函数式接口,不能简化内含多个抽象函数的接口!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/948089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详细介绍:Redis多租户资源隔离方案:基于ACL的权限控制与管理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

二分查找边界

二分查找边界二分查找边界Q:给定一个长度为𝑛的有序数组nums ,其中可能包含重复元素。请返回数组中最左一个元素target的索引。若数组中不包含该元素,则返回−1 。查找左边界 回忆二分查找插入点的方法,搜索完成…

求解 LCA 的三种方法及其比较

本文写于 2025 年 10 月 24 日。 昨天看到岁岁似今朝以“学不成名誓不还”的勇气学 LCA(树上最近公共祖先),并感叹“LCA 是我最严厉的母亲”,心血来潮,也学了一下。翻看着洛谷玲琅满目的题解,竟学会了三种方法,…

策略模式优化if-else

class Calculator:def __init__(self):self.strategy = Nonedef set_strategy(self, strategy):self.strategy = strategydef calculate_result(self, num1, num2):return self.strategy.execute(num1, num2)class Add…

捐赠

题目 题目描述 有 \(A\)、\(B\) 两类物品。 paper 打算每类各选 \(k\) 个(\(k\) 可自由决定,可取 \(0\))一起捐出。捐赠的总贡献为所选物品的价值总和。 初始时 paper 没有物品,但是 paper 可以通过一些操作改变物…

学习笔记:重链剖分

本文写于 2025 年 9 月 28 日。 前言 这几天一下课,班里的某位同学就走到我座位旁边,念叨着“来学树剖”。在他的 传销 诈骗 怂恿 鼓励之下,我也终于来到了这座大山面前,但发现似乎也并不难…… 何为重链剖分 考虑…

P3232 [HNOI2013] 游走

考虑贪心。 随机游走则显然每条边期望经过次数越大则其编号应越小。 每条边的期望经过次数难以计数,考虑每个店期望经过次数,设计状态 \(f_i\) 表示点 \(i\) 期望经过次数。 转移: \(f_i=\sum_{v\in e_i}f_v\cdot \…

FRP 后端无法获取请求者IP解决方案

FRP 后端无法获取请求者IP解决方案📝 FRP 后端无法获取请求者真实 IP?别慌,解决方案来啦!🧐 问题背景 当你使用 FRP 进行内网穿透或代理服务时,是否遇到过这样的困扰: 后端服务拿到的客户端 IP 全都是 FRP 服…

正睿 2025 NOIP 20连测 Day9

坐在前面的老哥 AK 了。他怎么这么成功,我怎么这么失败/ll。 T1小 W 有 \(n\) 个球,每个球都有一种颜色,其中第 \(i\) 个球初始的颜色可以用正整数 \(a_i\) 来表示,一共有 \(m\) 种颜色。 在一次染色操作中,小 W …

计算几何初步:CCW 与判断两线段的相交性

本文写于 2025 年 9 月 18 日。 前言 昨天在正睿的“IOI 普及联赛”中,有这样一道题,极大地冲击了本蒟蒻的心灵。赛后查看题解,此题竟然涉及计算几何,这更是本蒟蒻从未涉足的领域。我遂查询资料,学习了 CCW 算法以…

如何选择合适的团队共享网盘?坚果云、亿方云等15款产品横向测评

面对市场上琳琅满目的产品,管理者和技术决策者往往在可靠性、性能、安全性与成本之间难以取舍。本篇文章将围绕企业共享网盘,从功能覆盖、同步效率、安全合规、协作体验等维度,深度评测并对比市面上15款主流产品,帮…

软件工程学习日志2025.10.27

🎯 今日目标 完成基于Trae框架的IT岗位求职记录系统开发,重点训练数据库的增删改查操作能力 💻 项目启动:9:00 AM 技术选型确定 今天开始着手开发老师布置的IT岗位求职记录系统。经过技术调研,我决定采用以下技…

深入解析:TCP/IP 四层模型协作流程详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Windows全版本激活教程(仅供测试)

Windows全版本激活教程(仅供测试)Windows 系统激活指南 注意:本文档及所提供的工具仅供学习、测试和环境验证使用。请确保您遵守软件许可协议,在合法范围内使用。 免责声明 使用任何激活工具都存在潜在风险,包括但不…

基本概念2

1, 访问控制列表步骤一:创建一个访问控制规则 步骤二:调用这个规则基本配置和高级配置 基本配置只能限制源地址,不检查目标地址 高级配置源地址与目标地址都检查步骤一: 命令: acl name test advance # test是给…

20251027周一日记

20251027周一日记前些日: 1.周五玩得挺爽,熬到五点多睡的,转天有点遗憾但还是玩得挺爽。见识到了大城市之间的差距。 2.周六回家,出去吃饭;周日在家,出去吃饭。听家人说各有各在拼搏的方向。 今日: 1.早上睡过了…

【通讯协议】IIC

前言 对于各种协议的知识,假如不常用的话还是很容易忘记和生疏的,于是我会在这篇文章重新学习,顺带记录一下,以便下次复习。由于最近要用到 IIC,所以最先复习 IIC 的内容。 网上有关 IIC 的资料很多也很全面,所以…

Robot Queries

题目传送门 前置知识——向量的加减 \((x_1,y_1) \pm (x_2,y_2) = (x_1\pm x_2,y_1\pm y_2)\)。 满足交换律和结合律。 题目大意 有一个在 \((0,0)\) 的点。现在给出 \(n\) 个操作序列 \({f}\),每个指令形如 \((x, y)…

10月27日

今天上午学了统一建模语言和数构,下午学了Java

特殊的数字签名

盲签名 -- 部分盲签名 -- 群签名盲签名 Chaum盲签名协议 协议流程: \[\begin{flalign} &Setup:\\ &\quad p,q = getPrime(safe.bit\_length);n = p * q;Pubkey = (n, e);Pravitekey = d\\ &Sign:\\ &…