Optional类用法

简介

空指针异常是Java应用程序失败的最常见原因。Google公司在著名的Guava项目中引入了Optional类,通过使用检查空值的方式来防止代码污染,来解决臭名昭著的空指针异常问题。受此启发,Optional类已成为Java 8 类库的一部分。

使用

Optional类可以看做是一个容器,提供很多有用的方法处理空值的问题,这样使用者就可以不显式进行控制检测,使得代码更干净。

1. 创建Optional对象方法

Optional.of(T t):创建一个Optional实例,t必须非空
Optional.empty():创建一个空的Optional实例
Optional.ofNullable(T t)t可以为null

2. 判断Optional容器中是否包含对象

boolean isPresent():判断是否包含对象
void ifPresent(Consumer<? super T> consumer):如果有值,则执行Consumer接口的实现代码,存在的值会作为Consumer的参数
boolean isEmpty():判断value是否为空(JDK 11新增

3.获取Optional对象

T get():如果调用对象包含值,返回该值,否则抛出异常
T orElse(T other):如果有值则将其返回,否则返回指定的Other对象
T orElseGet(Supplier<? extends T> other):如果有值则将其返回,否则返回Supplier接口实现提供的对象
T orElseThrow(Supplier<? extends X> exceptionSupplier):如果有值则将其返回,否则抛出由Supplier接口实现提供的异常

isPresentOrElse(Consumer <? super T> action,Runnable emptyAction):值非空,则执行参数1功能,否则执行参数2功能(JDK 9 新增
Optional<T> or(Supplier <? extends Optional<? extends T> supplier >:值非空,返回对应的Optional;否则返回形参封装的Optional(JDK 9 新增
Stream<T> stream():值非空,返回仅包含此值的Stream;否则返回一个空的Stream(JDK 9 新增
T orElseThrow():值非空,返回值;否则抛出NoSuchElementException异常(JDK 10 新增

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

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

相关文章

Leetcode 221. 最大正方形

心路历程&#xff1a; 这道题是一个动态规划题&#xff0c;但是其实递推关系很难想到&#xff0c;如下图所示&#xff1a; MDP建模&#xff1a; 状态&#xff1a;以i,j为右下角的正方形 动作候选集&#xff1a;这道题的动作候选集其实是是否选择其左上角邻接的三个位置&#x…

11.范式与反范式设计

范式 1.问题 MySQL的库表设计&#xff0c;在很多时候我们都是率性而为&#xff0c;往往在前期的设计中考虑不全面&#xff0c;同时对于库表结构的划分也并不明确&#xff0c;所以很多时候在开发过程中&#xff0c;代码敲着敲着会去重构某张表结构&#xff0c;甚至大面积重构多…

linux常用基本命令

# 文本与文本查找 ## 1.grep 常用参数&#xff1a; -A n --after-context显示匹配字符后n行 -B n --before-context显示匹配字符前n行 -C n --context 显示匹配字符前后n行 -c --count 计算符合样式的行数 -i 忽略大小写 -v反转 -a处理二进制文件 -l 只列出文件内容符…

深圳比创达电子EMC|EMC电磁兼容性:电子设备稳定运行的保障

随着科技的飞速发展&#xff0c;电子设备在人们的日常生活中发挥着越来越重要的作用。然而&#xff0c;随之而来的电磁干扰问题也日益突出。电磁兼容性&#xff08;EMC&#xff09;作为衡量电子设备在电磁环境中正常工作能力的关键指标&#xff0c;其重要性不言而喻。 一、EMC…

IP地址是随着网络变化的吗?

IP地址&#xff0c;即互联网协议地址&#xff0c;是分配给每个联网设备或网络接口的数字标签。它在网络通信中起着至关重要的作用&#xff0c;是设备之间互相识别和通信的基础。然而&#xff0c;关于IP地址是否随着网络变化&#xff0c;这是一个值得深入探讨的问题&#xff0c;…

每日新闻掌握【2024年4月16日 星期二】

2024年4月16日 星期二 农历三月初八 大公司/大事件 丁雄军&#xff1a;茅台集团2023年出口额超43亿元&#xff0c;占中国白酒出口额的77% 36氪获悉&#xff0c;据贵州茅台微信公众号消息&#xff0c;4月13日&#xff0c;茅台集团党委书记、董事长丁雄军出席全球消费创新系列活…

深度残差收缩网络中,使用 Sigmoid 函数的用意在哪?

在深度残差收缩网络中&#xff0c;使用 Sigmoid 函数将输出归一化到 0 和 1 之间的目的是为了限制输出值的范围&#xff0c;并且使得输出可以被解释为概率。这个 Sigmoid 函数的输出可以被看作是一个置信度或者概率的度量&#xff0c;表示某个事件发生的可能性。 在设置阈值时…

对外观模式的理解

目录 一、场景【[案例来源](https://kamacoder.com/problempage.php?pid1089)】1 题目描述2 输入描述3 输出描述4 输入示例5 输出示例 二、如果不采用外观模式1、实现2、问题 三、采用外观模式1、实现2、优点 四、个人思考 一、场景【案例来源】 1 题目描述 小明家的电源总开…

微信小程序的反编译

参考&#xff1a; 微信小程序的反编译_magic number is not correct!-CSDN博客 如何从在安卓Android手机获取微信小程序源代码 - 知乎 (zhihu.com) 资源&#xff1a; wechar.apk RE管理器.apk Node.js”安装包 反编译GIT&#xff1a;hs610/wxappUnpacker (github.com)

Linux没有显示IP地址,报错mtu 1500 qdisc noop state DOWN group default qlen 1000

问题 复制虚拟机后, 打开,发现没有IP地址. ip addr 1:1o:<LOOPBACK,UP,LOWER_UP>mtu 65536 gdisc noqueue state UNKNOWN group default glen 1000 1ink/1 popback88:80:80:88:88:80brd00:0g:80:80:80:80 inet 127.0.0.1/8 scope host lo valid_lft forever preferre…

详解playwright 官方Javascript demo(适合小白)

如果大家刚上手playwright&#xff0c;并看到了Javascript脚本的官方demo&#xff0c;代码如下&#xff1a; const { webkit } require(playwright);(async () > {const browser await webkit.launch();const page await browser.newPage();await page.goto(http://what…

开放式耳机怎么选?五大市场热卖爆款推荐!

近年来&#xff0c;开放式耳机风潮席卷市场&#xff0c;各大知名品牌纷纷推出新品&#xff0c;以满足消费者的需求。相较于传统的入耳式耳机&#xff0c;开放式耳机凭借其独特的佩戴方式&#xff0c;受到了广大消费者的热烈追捧。它不仅有效避免了长时间佩戴带来的耳道不透气、…

【数据结构】栈的实现

&#x1f451;个人主页&#xff1a;啊Q闻 &#x1f387;收录专栏&#xff1a;《数据结构》 &#x1f389;前路漫漫亦灿灿 前言 栈是一种特殊的线性表&#xff0c;我们在有了顺序表和链表的知识的基础上&#xff0c;再来学习栈&#xff0c;掌握起来就更轻松了…

所有可能的真二叉树(Lc894)——记忆化搜索

给你一个整数 n &#xff0c;请你找出所有可能含 n 个节点的 真二叉树 &#xff0c;并以列表形式返回。答案中每棵树的每个节点都必须符合 Node.val 0 。 答案的每个元素都是一棵真二叉树的根节点。你可以按 任意顺序 返回最终的真二叉树列表。 真二叉树 是一类二叉树&#…

【24年物联网华为杯】赛题分析与初步计划

赛事介绍 官网链接&#xff1a;2024 年全国大学生物联网设计竞赛 (sjtu.edu.cn) 含金量&#xff1a;属于A类赛事 &#xff08;注意&#xff1a;很多搜索结果的序号是按照选入时间排列的&#xff0c;与含金量无关&#xff0c;华为杯是23年选入的&#xff09; Kimi Chat: 全国…

开源模型应用落地-LangChain试炼-CPU调用QWen1.5(一)

一、前言 尽管现在的大语言模型已经非常强大&#xff0c;可以解决许多问题&#xff0c;但在处理复杂情况时&#xff0c;仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而&#xff0c;现在可以利用langchain来使得模型的应用变得更加直接和简单。 通过langchain框…

js处理long精度丢失

1、业务背景 调用接口返回数据实体&#xff0c;id是long类型&#xff0c;浏览器(谷歌&#xff09;进行访问返回的id最后两位变成0了&#xff0c;精度丢失。但是通过postman是正常的。 2、问题分析 这是因为在 JavaScript 中&#xff0c;数字类型默认会被转换为双精度浮点数&…

【学习笔记十二】EWM上架仓位确定逻辑及操作演示

一、前言 关于EWM上架仓位确定的过程&#xff0c;我在【学习笔记十一】EWM上架目标仓位确定过程及配置-CSDN博客中讲到了 EWM根据仓库类型&#xff08;storage type&#xff09;、仓库分区&#xff08;storage section&#xff09;和上架策略&#xff08;putaway strategies&…

机器学习算法快速入门

文章目录 0.简介1.常用术语1) 模型2) 数据集3) 样本&特征4) 向量5) 矩阵6)假设函数&损失函数7&#xff09;拟合&过拟合&欠拟合 2.线性回归3.梯度下降求极值4.Logistic回归算法&#xff08;分类问题&#xff09;5.KNN最邻近分类算法6.朴素贝叶斯分类算法7.决策树…

SAP 技巧篇:解决下拉菜单不显示前缀编码问题

事务代码 BP创建主数据选择组时&#xff0c;组前面不显示英文分组&#xff0c;或者其他界面不显示对应英文分组” 01 — 背景需求 BP等事务代码进来不显示前面系统英文分组 02 — 实现 返回SAP GUI找到选项>可视化1>控件全部打钩 先打钩&#xff1a;在下拉列表内显示…