最新要闻
- 女子戴金手镯做核磁共振:手腕被烫出一圈水泡
- 环球短讯!三亚旅游发现拔白发服务一小时50元 网友叹服:发量不允许
- 【全球聚看点】多地对体育中考项目作出调整:取消/选考中考男女生长跑 800米对健康不利
- 全球短讯!情人节多部爱情电影集中上映:跟邓超新电影强势对垒
- 每日热文:ChatGPT爆火!争议声也越来越大了
- 可怕又惊喜!87岁老人棺材内复生 亲属称席都吃了:目前一切正常
- 全球讯息:200M内存就能启动 Win11极限精简版升级:去除广告
- 【独家】19岁男孩患阿尔茨海默病 专家:这么做可以远离
- 全球即时:PC销量下滑 AMD的Zen2处理器重新出山:配置没法看
- 清华教授花20多万为村民3D打印住宅:直言房子一点不贵 方式会普及
- 观速讯丨雷军再次力荐小米13和Redmi K60!一小米之家上午开门就卖了7台
- 今亮点!土耳其专家称遇上地震是命遭主持人怒斥:网友热议说的没毛病
- 【天天报资讯】小伙入职1小时被HR告知招错人:补偿50元
- 当前热讯:日本大飞机失败!印度砸1000亿美元买空客波音500架飞机:为何不自研?
- 世界观点:杨元庆评兰奇:联想登顶全球PC市场的关键先生去世了
- 世界热议:女子小巷停车失误一口气撞了10辆:被救时还在踩油门
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界关注:读Java实战(第二版)笔记07_用Optional取代null
(资料图)
1.null的由来
1.1.历史上被引入到程序设计语言中,目的是为了表示变量值的缺失
1.2.包括Java在内的大多数现代程序设计语言为了与更老的语言保持兼容
2.null带来的问题
2.1.错误之源
2.1.1.NullPointerException是最典型的异常
2.2.代码膨胀
2.2.1.深度嵌套的null检查
2.3.自身毫无意义
2.3.1.自身没有任何的语义
2.3.2.以一种错误的方式对缺失变量值的建模
2.4.破坏了Java的哲学
2.4.1.让程序员意识到指针的存在
2.4.2.null指针
2.5.在类型系统上开了个口子
2.5.1.null并不属于任何类型
2.5.2.null可被赋值给任意引用类型的变量
3.防御式检查NullPointerException
3.1.深层质疑
3.1.1.每次你不确定一个变量是否为null时,都需要添加一个进一步嵌套的if块,这也增加了代码缩进的层数
3.2.过多的退出语句
3.2.1.为了避免深层递归的if语句块
3.2.2.但这种流程是极易出错的
4.null的替代品
4.1.Groovy
4.1.1.安全导航操作符(safe navigation operator,标记为?)
4.1.2.可以安全访问可能为null的变量
4.1.3.掩耳盗铃
4.2.Haskell
4.2.1.Maybe类型
4.2.1.1.对Optional值的封装
4.2.1.2.可以是指定类型的值
4.2.1.3.可以什么都不是
4.3.Scala
4.3.1.Option[T]
4.3.1.1.显式地调用Option类型的available操作,检查该变量是否有值
4.3.1.1.1.变相的“null检查”
4.3.1.1.2.类型系统默认会强制进行检查
4.3.1.2.可以包含类型为T的变量
4.3.1.3.可以不包含该变量
4.4.Java
5.java.util.Optional
5.1.封装Optional值的类
5.1.1.对存在或缺失的变量值进行建模
5.1.2.用户只需要阅读方法签名,就能了解该方法是否接受一个Optional类型的值
5.1.3.不再需要为其添加null的检查
5.1.3.1.因为null的检查只会掩盖问题,并未真正地修复问题
5.2.清晰界定变量值缺失原因
5.2.1.结构上的问题
5.2.2.算法上的缺陷
5.2.3.数据中的问题
5.3.设计初衷仅仅是要支持能返回Optional对象的语法
5.3.1.没特别考虑将其作为类的字段使用
5.3.2.并未实现Serializable接口
5.3.2.1.替代方案提供一个能访问声明为Optional、变量值可能缺失的接口
5.4.Optional.empty
5.4.1.声明一个空的Optional
5.4.2.变量不存在时返回Optional类的特定单一实例
5.5.Optional.of
5.5.1.依据一个非空值创建Optional
5.6.Optional.ofNullable
5.6.1.可接受null的Optional
5.6.2.创建一个允许null值的Optional对象
5.7.get()
5.7.1.最简单但又最不安全的方法
5.7.2.抛出一个NoSuchElementException异常
5.8.orElseThrow(Supplier extends="" x=""? > exceptionSupplier)
5.8.1.类似get方法
5.8.2.定制希望抛出的异常类型
5.9.orElse(T other)
5.9.1.Optional对象不包含值时提供一个默认值
5.10.orElseGet(Supplier extends="" t=""? > other)
5.10.1.orElse方法的延迟调用版
5.10.2.Supplier方法只有在Optional对象不含值时才执行调用
5.10.3.应用场景
5.10.3.1.创建默认值是件耗时费力的工作,借此提升程序的性能
5.10.3.2.非常确定某个方法仅在Optional为空时才进行调用
5.11.or(Supplier extends=""? > extends="" t=""? >> supplier)
5.11.1.Java9
5.11.2.类似orElseGet方法
5.11.3.不会解包Optional对象中的值,即便该值是存在的
5.12.ifPresent(Consumer super="" t=""? >consumer)
5.12.1.变量值存在时,执行一个以参数形式传入的方法
5.12.2.变量值不存在时,就不进行任何操作
5.13.ifPresentOrElse(Consumer super="" t=""? > action, Runnable emptyAction)
5.13.1.Java9
5.13.2.接受一个Runnable方法,如果Optional对象为空,就执行该方法所定义的动作
5.14.和Stream接口的相似之处
5.14.1.map方法
5.14.1.1.使用map从Optional对象中提取和转换值
5.14.2.flatMap方法
5.14.2.1.使用flatMap链接Optional对象
5.14.3.filter方法
5.14.3.1.使用filter剔除特定的值
5.15.操纵由Optional对象构成的Stream
5.15.1.Java9
5.15.2.把一个含值的Optional对象转换成由该值构成的Stream对象
5.15.3.把一个空的Optional对象转换成等价的空Stream
5.16.基础类型的Optional对象
5.16.1.OptionalInt
5.16.2.OptionalLong
5.16.3.OptionalDouble
5.16.4.不推荐
5.16.4.1.Optional对象最多只包含一个值
5.16.4.2.基础类型的Optional不支持map、flatMap以及filter方法
-
世界关注:读Java实战(第二版)笔记07_用Optional取代null
1 & 160;null的由来1 1 & 160;历史上被引入到程序设计语言中,目的是为了表示变量值的缺失1 2 &...
来源: 世界关注:读Java实战(第二版)笔记07_用Optional取代null
新资讯:痞子衡嵌入式:我拿到了CSDN博客专家实体证书
全球观焦点:深入解读.NET MAUI音乐播放器项目(二):播放内核
女子戴金手镯做核磁共振:手腕被烫出一圈水泡
环球短讯!三亚旅游发现拔白发服务一小时50元 网友叹服:发量不允许
【全球聚看点】多地对体育中考项目作出调整:取消/选考中考男女生长跑 800米对健康不利
全球短讯!情人节多部爱情电影集中上映:跟邓超新电影强势对垒
每日热文:ChatGPT爆火!争议声也越来越大了
焦点速递!fusion app 常用小技巧
可怕又惊喜!87岁老人棺材内复生 亲属称席都吃了:目前一切正常
全球讯息:200M内存就能启动 Win11极限精简版升级:去除广告
【独家】19岁男孩患阿尔茨海默病 专家:这么做可以远离
全球微头条丨Pytorch环境安装
全球即时:PC销量下滑 AMD的Zen2处理器重新出山:配置没法看
《分布式技术原理与算法解析》学习笔记Day08
清华教授花20多万为村民3D打印住宅:直言房子一点不贵 方式会普及
观速讯丨雷军再次力荐小米13和Redmi K60!一小米之家上午开门就卖了7台
今亮点!土耳其专家称遇上地震是命遭主持人怒斥:网友热议说的没毛病
【天天报资讯】小伙入职1小时被HR告知招错人:补偿50元
全球热门:基于ModelViewSet写接口
当前热讯:日本大飞机失败!印度砸1000亿美元买空客波音500架飞机:为何不自研?
世界观点:杨元庆评兰奇:联想登顶全球PC市场的关键先生去世了
世界热议:女子小巷停车失误一口气撞了10辆:被救时还在踩油门
环球看热讯:女子路边买鹅蛋煮后蛋清是粉色 当事人懵了:不敢吃
全球实时:6档调节 MacBook都能用:诺西笔记本/平板铝合金支架19.9元
世界播报:加倍水润 杰士邦零感爆款避孕套大促:30只19.9元
当前简讯:索尼最强旗舰!Xperia 1 V渲染图首曝
焦点热文:中国女子土耳其地震中被埋:用纸吸雨水求生成功获救
环球热议:基于九个视图子类写五个接口
程序员画图软件推荐
JVM classpath的理解和设置总结
印度官员呼吁将情人节改成抱牛日:可增加幸福感
全球要闻:比尔·盖茨:ChatGPT像互联网发明一样重要、将会改变世界
【环球新视野】C++ 地球人口承载力
头条:5个python中编程的大坑
《流浪地球2》笨笨、门门设计稿公布 网友:别忘了MOSS
特斯拉股价2个月翻倍 马斯克有望夺回首富:只差400亿
天天速递!安卓14第一版正式发布 国产机泛滥的功能终于有了
世界观察:网易一面:select分页要调优100倍,说说你的思路?(内含Mysql的36军规)
买车送游戏机 丰田展示任天堂涂装版“大汉兰达”:内置大屏
最新资讯:好货不等人!森马官方清仓:春季高帮厚底板鞋79元大促(减190元)
每日快报!【踩坑日记】nginx server_name配置多域名的坑
日本独居长臂猿生娃动物园排查其情史:与“邻居”通过9毫米小孔交配
三句话惹生气?百度PLATO大火 网友:智能抬杠机器人
25%高增速:长城汽车2023年冲刺160万辆
星际飞船点火测试成功 马斯克预言:人类10年内登上火星
全球看点:对ChatGPT的几个提问,当码农小帮手可行
环球今日讯!状态模式
全球今热点:9.98万起真香 新款比亚迪秦PLUS DM-i上市 网友:不给合资留活路
LOJ 3395 集训队作业 Yet Another Permutation Problem 题解 (生成函数技巧)
重庆将为18万在校女学生免费接种HPV疫苗:全面预防宫颈癌
快资讯丨全球首创双枪充电!比亚迪赵长江:腾势D9纯电版20日左右交付
新消息丨做国内第一!深圳拼了:全市5G网速平均必500Mbps 上行下载更狠
全球球精选!你退了吗?网易已为超112万暴雪国服玩家退款
焦点快播:chatGPT接入个人微信(国内可用)
里程碑!ChatGPT参加美执业医师资格考试成绩合格 研究者:出了名的难
全球速看:雷军:小米汽车研发团队已超2300人 明年年一季度量产
最新快讯!真维斯官旗抄底:100%纯棉T恤4件99元包邮
2、如何验证是否存在CDN?
上天入海!我国最新研发飞行器“同济飞鱼”:可实现水陆两栖
ChatGPT或导致20种工作失业?远远不止 比尔盖茨:ChatGPT将改变世界
14不用管!小米小顽智能全自动猫砂盆预售:1399元
天天动态:Java8函数式编程读后总结与感想
新消息丨利用微PE制作官方最新纯净系统
【天天快播报】首富想干啥?马斯克公司遭调查:涉嫌非法运输危险病原体
全球热议:eSIM终于等来出头之日
5人将苹果翻新机当正品卖:赚到1.16亿!最终获刑
当前速递!80后、90后的“死去的回忆”:都完整保存在这里
当前热门:《原神》国外配音演员龌龊劣迹被锤:涉嫌骚扰未成年粉丝
环球百事通!【垃圾回收】v8引擎垃圾回收策略
世界快资讯:大爷大妈景区爬松树站树顶拍照 景区称出事不负责!网友被吓到
小白也能做应用(三)之fusion app远程更新及免登录
环球热文:kx00016-顺序表--用C语言实现:多种方法合并2个非递减顺序表
2月87款国产游戏获批版号:腾讯、网易新游来了
python之路68 drf从入门到成神 9 drf_jwt源码执行流程、自定义用户表签发和认证、simpleui的使用、权限控制(acl、rbac)
每日关注!导出域用户hash姿势总结
世界滚动:readelf命令读取elf文件的详细信息
再不用装一堆软件了!Windows 11可原生控制RGB信仰灯
天天热头条丨西安最倒霉面馆顾客暴涨员工数翻4倍 很多人慕名而来:感谢大家照顾
每日热门:56.函数模板
热门看点:学习打卡01- java入门
通讯!男子躲查酒驾3次跳河 血检结果却为0!结果令人舒适
流畅度飙升!小米:MIUI 14第一批正式版机型已全量推送
开了比亚迪之后 男子直呼不会开油车了:跟老人机一样
【当前独家】配1200W永磁同步电机!宗申TL3两轮版上市:可载重300公斤
世界快消息!别以为老师看不出来ChatGPT生成的论文!网友:你什么水平老师心里有数
世界热头条丨基于声网互动白板实现一个多人数独游戏
当前最新:学习笔记——尚好房项目(配置ssm环境、测试ssm环境)
《Towards Cooperation in Sequential Prisoner’s Dilemmas: a Deep Multiagent Reinfo
世界滚动:R机器学习:重复抽样在机器学习模型建立过程中的地位理解
【世界聚看点】火狐浏览器国内最受欢迎的扩展出炉:ABP等神级工具没入围
真相令人大跌眼镜!研究称莫奈印象派画风实则是雾霾
焦点要闻:土耳其地震“震出”隐秘地层:覆盖地球的44%、颠覆板块运动
今日最新!女子应聘财务被要求给五六人煮饭 负责人:吃饭不方便 可以不煮
多色多款 杰克琼斯卫衣89元包邮:低至1.3折清仓
项目终于用上了低代码,才知道为什么真香了!
机器学习-PCA
天天热消息:kx00015-顺序表--用C语言实现:删除顺序表中元素值等于x的所有元素
精彩看点:批处理脚本教程_编程入门自学教程_菜鸟教程-免费教程分享
vuex相关笔记