最新要闻
- 全球速讯:男子油锅炸元宵现场惨烈 发生自爆崩起半米高:科普为何会翻车
- 天天头条:中国探月四期全面推进:月球上寻找水源、科研站基本成型
- 【全球新视野】Intel Arc 750新驱动提升43%游戏性能!RTX 3060最大劲敌来了
- 万元起步?苹果iPhone 16将推Ultra超旗舰 库克称果粉愿意花高价
- 存储卡/U盘提示要格式化?先恢复出数据再说
- 【全球新要闻】2600元的PCIe 5.0 SSD全球首测:读写双破10GB/s!但吵死了
- 邪恶、丑陋的互联网:你还敢发孩子的短视频吗?
- 世界热门:丰田最新表态:纯电车不环保!
- 焦点短讯!谷歌家也没有余粮了:用旧的服务器不要扔 擦擦还能用2年
- 每日精选:《三体》电视剧罗辑亮相 网友:袁华 是你吗?
- 环球快消息!连续两部当主演 《流浪地球3》中或没有吴京:如何复活很关键
- 【全球新要闻】染发剂致癌吗?几十块和几百块的染发剂 究竟有啥区别?
- 全球快讯:等等党赚了:《仙剑奇侠传七》宣布将加入XGP服务
- 环球新动态:Gmail之父:有了ChatGPT 搜索引擎活不过两年 就像干掉黄页电话簿
- 量子通信网络里程碑 中国科大实现模式匹配量子密钥分发
- 男子将厕所改造成电竞房 网友:从此再也不怕“膀胱局”了
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
读Java实战(第二版)笔记02_行为参数化Lambda表达式
(资料图片)
1.行为参数化
1.1.处理频繁变更的需求的一种软件开发模式
1.1.1.不管你做什么,用户的需求肯定会变
1.1.2.可让代码更好地适应不断变化的要求,减轻未来的工作量
1.2.一个方法接受多个不同的行为作为参数,并在内部使用它们,完成不同行为的能力
1.2.1.类似于在内联“传递代码”
1.2.2.重复使用同一个方法,给它不同的行为来达到不同的目的
1.2.2.1.DRY(Don"t Repeat Yourself,不要重复自己)
1.2.2.2.例如:把迭代要筛选的集合的逻辑与对集合中每个元素应用的行为区分开来
1.3.传递代码就是将新行为作为参数传递给方法
1.3.1.在Java 8之前可以用匿名类
1.3.1.1.匿名类和局部类(块中定义的类)差不多,但匿名类没有名字
1.3.1.2.GUI应用程序中经常使用匿名类来创建事件处理器对象
1.3.1.3.声明很多只要实例化一次的类
1.3.2.以用不同行为进行参数化的方法,包括排序、线程和GUI处理
2.Lambda表达式
2.1.基本语法
2.1.1.块-风格的Lambda
2.1.1.1.(parameters) -› { statements; }
2.1.2.表达式-风格的Lambda
2.1.2.1.(parameters) -› expression
2.2.没有声明名称的方法
2.3.和匿名类一样,也能作为参数传递给一个方法
2.4.允许你直接以内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例
2.5.一种简洁的可传递匿名函数:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表
2.5.1.匿名
2.5.2.函数
2.5.2.1.有参数列表、函数主体、返回类型,还可能有可以抛出的异常列表
2.5.3.传递
2.5.3.1.可以作为参数传递给方法或存储在变量中
2.5.4.简洁
2.5.4.1.无须像匿名类那样写很多模板代码
2.6.方法调用的返回值为空时,Java语言规范有一条特殊的规定,不需要使用括号环绕返回值为空的单行方法调用
2.7.捕获Lambda允许使用自由变量(不是参数,而是在外层作用域中定义的变量),就像匿名类一样
2.7.1.可以没有限制地捕获(也就是在其主体中引用)实例变量和静态变量
2.7.2.局部变量必须显式声明为final,或事实上是final
2.7.2.1.只能捕获指派给它们的局部变量一次
2.7.2.2.捕获实例变量可以被看作捕获最终局部变量this
2.7.2.3.不能修改定义Lambda的方法的局部变量的内容。这些变量必须是隐式最终的
2.7.3.实例变量都存储在堆中
2.7.3.1.堆是在线程之间共享的
2.7.4.局部变量则保存在栈上
2.7.4.1.允许捕获可改变的局部变量,就会引发造成线程不安全的新的可能性
2.7.4.2.在访问自由局部变量时,实际上是在访问它的副本,而不是访问基本变量
2.7.5.不鼓励你使用改变外部变量的典型命令式编程模式
2.8.Lambda是对值封闭,而不是对变量封闭
2.9.闭包就是一个函数的实例,且它可以无限制地访问那个函数的非本地变量
2.9.1.可以访问和修改其作用域之外的变量
3.匿名内部类
3.1.也可以完成Lambda表达式同样的事情,比较笨拙:需要提供一个实现,然后再直接内联将它实例化
4.方法引用
4.1.仅调用特定方法的Lambda的一种快捷写法
4.1.1.更易读
4.1.2.更自然
4.2.仅涉及单一方法的Lambda的语法糖
4.2.1.同样的事情时要写的代码更少
4.3.如果一个Lambda代表的只是“直接调用这个方法”,那最好还是用名称来调用它,而不是去描述如何调用它
4.4.指向静态方法的方法引用
4.4.1.例如Integer的parseInt方法,写作Integer::parseInt
4.5.指向任意类型实例方法的方法引用
4.5.1.例如String的length方法,写作String::length
4.6.指向现存对象或表达式实例方法的方法引用
4.6.1.例如你有一个局部变量expensive Transaction保存了Transaction类型的对象,它提供了实例方法getValue,那你就可以这么写expensive-Transaction::getValue
4.7.构造函数引用
4.7.1.对于一个现有构造函数,你可以利用它的名称和关键字new来创建它的一个引用:ClassName::new
4.7.2.不将构造函数实例化却能够引用它
4.7.3.语言本身并没有提供的函数式接口,可以自己创建一个
5.函数式接口
5.1.只定义一个抽象方法的接口
5.1.1.很多默认方法,只要接口只定义了一个抽象方法,仍然是一个函数式接口
5.1.2.默认方法不是抽象方法
5.2.函数式接口的抽象方法的签名称为函数描述符
5.2.1.基本上就是Lambda表达式的签名
5.3.@FunctionalInterface
5.3.1.这个标注用于表示该接口会设计成一个函数式接口,因此对文档来说非常有用
5.3.2.不是必需的,但对于为此设计的接口而言,使用它是比较好的做法
5.4.java.util.function包中新的函数式接口
5.4.1.Predicate‹T›接口定义了一个名叫test的抽象方法,它接受泛型T对象,并返回一个boolean
5.4.1.1.谓词(即一个返回boolean值的函数)
5.4.2.Consumer‹T›接口定义了一个名叫accept的抽象方法,它接受泛型T的对象,没有返回(void)
5.4.3.Function‹T, R›接口定义了一个叫作apply的抽象方法,它接受泛型T的对象,并返回一个泛型R的对象
5.4.3.1.配了andThen和compose两个默认方法,它们都会返回Function的一个实例
5.4.4.Supplier‹T›
5.4.5.BinaryOperator‹T›
5.5.函数式接口中的任何一个都不允许抛出受检异常(checked exception)
5.5.1.定义一个自己的函数式接口,并声明受检异常
5.5.2.把Lambda包在一个try/catch块中
5.5.2.1.环绕执行(execute around)模式
6.装箱(boxing)
6.1.将基本类型转换为对应的引用类型的机制
7.拆箱(unboxing)
7.1.将引用类型转换为对应的基本类型
8.自动装箱机制
8.1.装箱和拆箱操作是自动完成的
9.特殊处理
9.1.IntPredicate
9.2.DoublePredicate
9.3.ToIntFunction‹T›
9.4.IntConsumer
9.5.LongBinaryOperator
9.6.IntFunction
9.7.IntToDoubleFunction
10.目标类型
10.1.Lambda的类型是从使用Lambda的上下文推断出来的
10.2.上下文(比如,接受它传递的方法的参数,或接受它的值的局部变量)中Lambda表达式需要的类型
10.3.同一个Lambda表达式就可以与不同的函数式接口联系起来,只要它们的抽象方法签名能够兼容
10.4.Lambda表达式的上下文是Object(目标类型)。但Object不是一个函数式接口。
10.4.1.你可以把目标类型改成Runnable,它的函数描述符是() -› void
10.5.为了消除显式的二义性,你可以对Lamda进行强制类型转换
10.6.有时候显式写出类型更易读,有时候去掉它们更易读
读Java实战(第二版)笔记02_行为参数化Lambda表达式
全球速讯:男子油锅炸元宵现场惨烈 发生自爆崩起半米高:科普为何会翻车
天天头条:中国探月四期全面推进:月球上寻找水源、科研站基本成型
【全球新视野】Intel Arc 750新驱动提升43%游戏性能!RTX 3060最大劲敌来了
【全球播资讯】day02-REST和SpringMVC映射请求数据
万元起步?苹果iPhone 16将推Ultra超旗舰 库克称果粉愿意花高价
存储卡/U盘提示要格式化?先恢复出数据再说
【全球新要闻】2600元的PCIe 5.0 SSD全球首测:读写双破10GB/s!但吵死了
邪恶、丑陋的互联网:你还敢发孩子的短视频吗?
记一次selenium爬取p站图片的经历
世界热门:丰田最新表态:纯电车不环保!
焦点短讯!谷歌家也没有余粮了:用旧的服务器不要扔 擦擦还能用2年
环球快看点丨路由架构(一)
每日精选:《三体》电视剧罗辑亮相 网友:袁华 是你吗?
环球快消息!连续两部当主演 《流浪地球3》中或没有吴京:如何复活很关键
全球要闻:web安全基础-文件上传(含部分upload-labs靶场通关)
世界资讯:谈刻意练习 Talking about deliberate pratise
新动态:Linux环境下:程序的链接, 装载和库[动态链接]
【全球新要闻】染发剂致癌吗?几十块和几百块的染发剂 究竟有啥区别?
全球快讯:等等党赚了:《仙剑奇侠传七》宣布将加入XGP服务
环球新动态:Gmail之父:有了ChatGPT 搜索引擎活不过两年 就像干掉黄页电话簿
每日焦点!操作系统篇 ———— 开篇[一]
全球最资讯丨ES6 简介(二)
量子通信网络里程碑 中国科大实现模式匹配量子密钥分发
男子将厕所改造成电竞房 网友:从此再也不怕“膀胱局”了
世界观速讯丨9 文件操作
当前速看:多国反对被无视 日本2030年前排放40万吨核污水入海
今日关注:“最强法务部”名不虚传:任天堂赢得Joy-Con手柄集体诉讼案
热门:iPhone 14系列官方降价引热议 网友:安卓厂商压力山大
【环球时快讯】Java实现动态数组(数据结构与算法)
【全球新要闻】推特创作者将获得广告分成:需要开通蓝V会员才有资格
一加Ace 2正面“全身照”首次亮相:超窄边框双曲屏
当前速看:高中生分班前磕头跪谢班主任:网友看后意见大!老师回应:给每人发了红包
【全球速看料】MAUI新生6.9-控件辅助功能①:动画Animation
集合框架
10 正则表达式应用
《流浪地球2》里的“硬核科技” 中国电信已经用上了
全球报道:超详细--redis在Linux环境搭建主从复制
当前视讯!ChatGPT将英伟达AI GPU变成黄金 后者股价飙升超40%
《狂飙》带火鱼干店 老板:微信加烦了!剧中原来是这一集
焦点报道:为什么 L1 正则化能做特征选择而 L2 正则化不能
Linux环境下:程序的链接, 装载和库[可执行文件的装载]
当前焦点!Edge新版增加内容推荐按钮:打开甚至不用点
今日报丨比亚迪1月销量:汉卖出1.22万辆 宋Plus继续火爆
当前头条:[数据结构] 哈希表 (开放寻址法+拉链法)
天天动态:车主展示特斯拉自动泊车入位 结果翻车:变成“自动撞车”
【天天速看料】价格暴降后特斯拉供不应求 马斯克:准备要涨了
热点评!迁移学习(HDAN)《Heuristic Domain Adaptation》
美团索命一问:一个SQL ,怎么分析加了哪些锁? 含4大场景、8个规则
宝能造车梦破碎:烧了80多亿元的观致 如今沦为法拍车
女孩4万多元的摩托 被男摩友加白糖报废!官方介入
读Java实战(第二版)笔记01_Java的变化
全球即时:柔软顺滑 古今男士平角裤3条到手29.9元
世界视讯!休闲百搭 361° 运动束脚裤立减140元:49元起清仓价
环球速看:冰火两重天!四川一地昼夜温差38.6℃ 专家揭秘真相
今年开播有戏 “陈萍萍”演员吴刚回应《庆余年》第二季:很快了
python的基础知识1
奔驰被曝大砍产品线!19款车型或将淘汰 原因现实
环球视点!马斯克收费比微博狠多了:推特被曝企业“金V”认证付费:每月6770元
焦点热议:3年前旗舰也有份!中国广电剧透:小米10/青春版计划4月推送MIUI 14
《流浪地球2》票房破32亿元 导演谈第3部:原班人马再来一遍
全球最资讯丨浙江台州最大汽车经销商老板跑路 旗下19家4S店全部关停
12.4万保时捷首单买家发声:保时捷答应优惠卖车
[数据结构] 树、森林的遍历
每日时讯!MAUI新生2.5-数据绑定和MVVM:MVVM的属性验证
当前速递!父亲借女儿3万压岁钱不还被起诉 法院:应还本金及利息
焦点观察:1万元!佳能入门级全画幅相机EOS R8规格曝光
世界微速讯:为S23让路!三星Galaxy S22京东秒杀:骁龙8小屏旗舰 3569元
环球微头条丨豆瓣8.1分!《三体》主创:能拍中国科幻大作 此生无憾
低代码平台前端的设计与实现(三)设计态画布DesignCanvas的设计与实现
热资讯!重庆一景区煮麻辣汤圆:下次元宵佳节还得等384天
男子打包螺蛳粉开车24小时运回北京 只因朋友圈一句话:这是真爱
【天天新视野】用户滑雪频繁触发iPhone车祸检测功能 苹果:已进行了优化 同时派代表考察
天天快播:甜品级游戏本价格已曝光:搭载RTX 4050/4060
环球消息!5 组合数据类型
今日讯!短记我的二十五岁,如落叶般随风飘荡。
世界观焦点:java基础:流程控制
女子春节连打4通宵麻将:患上突发性耳聋
国产显卡搞定“显卡杀手”:摩尔线程MTT S80居然能跑《孤岛危机》
【世界独家】极限挤牙膏!三星Galaxy S23系列用残血版LPDDR5X内存
世界微动态丨wireshark 抓包整理———— 从一个小案例开始 [一]
【全球热闻】游客洪崖洞花30元找当地大爷抄近道 只花2分钟:网友道出真相
速讯:博纳影业总裁妻子金巧巧否认暗指《满江红》排片多、不好看:个人喜好
颜值最高的白色手机来了!vivo X90告白下周预售:天玑9200加持
天天消息!Python教程:IO
零下10度静止一夜不掉电!“车主”盛赞恒驰5 OTA效果好
当前视点!java基础:java基础语法
大众也不香了!比亚迪ATTO 3获德媒超高认可:钟爱刀片电池
快资讯:CPU性能提升10%!13代酷睿笔记本测试数据出炉
【全球报资讯】盖茨向马斯克“泼冷水”:殖民火星完全浪费钱
世界新资讯:医生发现19岁阿尔兹海默症患者:已知最年轻
SQL SERVER——高可用技术概述
环球微头条丨用ChatGPT写作业?新算法给AI生成文本加水印:置信度高达99.999999999994%
快播:【Redis场景拓展】秒杀问题-全局唯一ID生成策略
美团一面:InndoDB 单表最多 2000W,为什么?小伙伴竟然面挂
每日精选:2个月没人管!AMD老显卡终于要有新驱动了
奢侈品不愁卖!LV将涨价20% 世界首富放言:中国人有钱
全球看热讯:Andlua+实现WakeUpOnline远程开机
Docker搭建本地私有仓库
世界即时:vue/ts 新建项目时好用的配置 【vite.config.ts、tsconfig.json、】