Java 8新特性Optional的使用以及判空案例

Java 8新特性:Optional的使用及判空案例

在Java 8中,引入了一个重要的类Optional,它是为了解决空指针异常(NullPointerException)而设计的。Optional可以作为一个容器,可以包含一个非空的值或者为空

Optional的基本使用

创建Optional对象

可以使用Optional.of()方法创建一个包含非空值的Optional对象,例如:

String name = "John Doe";
Optional<String> optionalName = Optional.of(name);

在这里插入图片描述

如果name为null,则会抛出NullPointerException

如果你不确定值是否为null,可以使用Optional.ofNullable()方法,它可以接受一个可能为null的值,例如:

String name = null;
Optional<String> optionalName = Optional.ofNullable(name);

在这里插入图片描述

判断Optional是否包含值

可以使用isPresent()方法来判断Optional是否包含值,例如:

if (optionalName.isPresent()) {System.out.println("Name is present: " + optionalName.get());
} else {System.out.println("Name is absent.");
}

在这里插入图片描述

获取Optional中的值

可以使用get()方法来获取Optional中的值,但是在调用之前最好先使用isPresent()进行判断,例如:

 String name1 = "liming";Optional<String> optionalName = Optional.ofNullable(name1);if (optionalName.isPresent()) {String name = optionalName.get();System.out.println("Name: " + name);} else {System.out.println("Name is absent.");}

在这里插入图片描述

使用默认值(建议使用)

可以使用orElse()方法指定一个默认值,当Optional为空时返回该默认值,例如:

 String name1 = null;String defaultName = "Unknown";Optional<String> optionalName = Optional.ofNullable(name1);String name = optionalName.orElse(defaultName);System.out.println("Name: " + name);

在这里插入图片描述

Optional的判空案例

避免空指针异常

在早期的Java版本中,经常会因为未对变量进行判空而导致空指针异常。使用Optional可以避免这种问题,例如:

Optional<String> optionalName = Optional.ofNullable(getName());
String name = optionalName.orElse("Unknown");
System.out.println("Name: " + name);

链式操作

Optional还支持链式操作,例如:

Optional<String> optionalName = Optional.ofNullable(getName());
optionalName.ifPresent(n -> System.out.println("Name: " + n));

总结

Optional是Java 8引入的一个重要特性,它可以避免空指针异常,并提供了简洁易读的代码风格。通过本文的介绍,你应该已经了解了Optional的基本使用方法以及如何利用它进行判空。建议Optional用在方法返回值上。参考链接:Java 8 Optional Documentation

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

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

相关文章

锂电池污水如何处理

锂电池是目前应用广泛的重要电池类型&#xff0c;然而其生产过程和废弃处理中产生的污水对环境造成了不可忽视的影响。本文将探讨锂电池污水的处理方法&#xff0c;以期为环境保护和可持续发展作出贡献。 首先&#xff0c;了解锂电池污水的组成是解决问题的关键。锂电池污水通…

防雷接地电阻和接地网的区别及其应用

接地是电气工程中的一种重要的安全措施&#xff0c;它可以保护电气设备和人员免受雷击和过电压的危害&#xff0c;也可以提高电气系统的运行稳定性和可靠性。接地的基本原理是将电气设备或人体与大地连接成同一电位&#xff0c;从而消除或减小危险电压。 地凯科技接地的实现方式…

上海亚商投顾:北证50指数大涨 逾百只北交所个股涨超10%

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指11月24日震荡调整&#xff0c;深成指、创业板指盘中跌超1%。北证50指数大涨超6%&#xff0c;北交所个股持…

BGP路由的选路综合实验

题目要求 1.使用PreVal策略&#xff0c;确保R1通过R3到达192.168.10.0/24 2.使用AS_Path策略&#xff0c;确保R1通过R3到达192.168.11.0/24 3.配置MED策略&#xff0c;确保R1通过R3到达192.168.12.0/24 4.使用Local Preference策略&#xff0c;确保R4通过R2到达192.168.1.0/24…

git-2

1.分离头指针情况下的注意事项 分离头指针指的是变更没有基于某个branch去做&#xff0c;所以当进行分支切换的时候&#xff0c;在分离头指针上产生的commit&#xff0c;很可能会被git当作垃圾清理掉&#xff0c;如果你认为是重要的内容&#xff0c;切记需要绑定分支 2.进一步…

2023机器人灵巧手的分类与商业化应用及未来市场规模分析报告

今天分享的是机器人系列深度研究报告&#xff1a;《2023机器人灵巧手的分类与商业化应用及未来市场规模分析报告》。 &#xff08;报告出品方&#xff1a;深度行业分析研究&#xff09; 报告共计&#xff1a;26页 1 灵巧手是人形机器人重要的运控交互部件&#xff0c;近年来海…

MyBatis-Plus条件构造器

说明 Wrapper&#xff1a;条件构造抽象类&#xff0c;最顶端父类AbstractWrapper&#xff1a;用于查询条件封装&#xff0c;生成sql的where条件QueryWrapper&#xff1a;查询条件封装UpdateWrapper&#xff1a;更新条件封装AbstractLambdaWrapper&#xff1a;使用Lambda语法La…

BI报表用多了,就再看不了其他报表

BI报表有魔力&#xff0c;一旦用多了&#xff0c;就再也接受不了其他的报表。为什么&#xff1f;我这就来总结说说。 1、分析的效率 一般报表&#xff1a;要做报表&#xff0c;先找IT取数&#xff0c;然后开发&#xff0c;分析过程中有新需求&#xff0c;不好意思&#xff0c…

网络篇---第三篇

系列文章目录 文章目录 系列文章目录前言一、说一下HTTP的长连接与短连接的区别二、TCP 为什么要三次握手,两次不行吗?为什么?三、说一下 TCP 粘包是怎么产生的?怎么解决粘包问题的?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大…

GNSS接收机 高精度GNSS接收机 4GGNSS接收机

GNSS接收机TN521 ★多频多系统个高精度定位&#xff0c;支持GPS L1/L2&#xff0c;BD B1/B2&#xff0c;支持北斗三代 ★外置GNSS、4G天线 ★平面精度2.5mm 1ppm RMS&#xff0c;高程精度511ppm RMS ★监测终端内嵌工业级智能平台 ★支持4G全网通、全面支持移动/联通/电信…

Python编写的爬虫:为什么受到如此的欢迎?

目录 一、引言 二、Python爬虫受欢迎的原因 1、语言简洁易读 2、强大的数据处理能力 3、丰富的网络爬虫库 4、跨平台性 5、社区支持与资源丰富 三、Python爬虫应用案例 四、总结 一、引言 在当今的大数据时代&#xff0c;信息获取和数据处理能力对于企业和个人来说至…

UEditor编辑器实现上传图片自动加水印功能PHP源码

UEditor编辑器是百度旗下的免费开源富文本编辑器,使用很方便,但是也有缺点,比如,上传图片不能自动添加水印,下边我们就来说说如何在UEditor编辑器中自动实现上传图片添加水印功能,操作很简单。 首先找到UEditor/PHP目录下的Uploader.class.php的文件,打开该文件,找到以…

linux下磁盘分区、挂载实操

文章目录 一、磁盘分区1.查看磁盘分区情况2.使用fdisk进行分区&#xff08;2T以下&#xff09;3.删除分区4.使用parted对磁盘进行分区&#xff08;大于2T&#xff09; 二、磁盘格式化1.格式化文件系统2.关闭文件系统自检3.禁止检查磁盘文件系统&#xff0c;开机修复错误 三、磁…

帮管客CRM 文件上传漏洞复现

0x01 产品简介 帮管客CRM是一款集客户档案、销售记录、业务往来等功能于一体的客户管理系统。帮管客CRM客户管理系统&#xff0c;客户管理&#xff0c;从未如此简单&#xff0c;一个平台满足企业全方位的销售跟进、智能化服务管理、高效的沟通协同、图表化数据分析帮管客颠覆传…

【数字化转型方法论读书笔记】-数据中台落地实施之法

让数据中台真正落地是实现数字化转型的重中之重。企业做好数据治理、体系建设及人才配备等前期工作后&#xff0c;接下来要做的是数据中台实施落地的关键。 企业首先要掌握数据中台建设的三大核心要素&#xff1a;选对数据建设方式、厘清建设思路、避开数据中台建设误区&#…

Linux(CentOS7.5):硬盘分区纪实

一、服务器概述 1、既有一块系统硬盘&#xff0c;新增一块100G硬盘。 2、要求&#xff0c;将新插入硬盘分为&#xff1a;20G、30G、50G。 二、操作步骤 1、确认新硬盘是否插入成功&#xff1a; fdisk -l# 红色框出来的&#xff0c;为识别出来的新硬盘信息 # 黄色框出来的&#…

【刷题笔记】接雨水||暴力通过||符合思维方式

接雨水 文章目录 接雨水1 题目描述2 分析2.1 左到右2.2 右到左2.3 计算面积 3 代码3.1 Java3.2 Python 附录1 1 题目描述 https://leetcode.cn/problems/trapping-rain-water/ 面试的时候关键不是你的手法多么精妙&#xff0c;首先要做出来。 给定 n 个非负整数表示每个宽度为…

如何避免光模块接口受到污染?

光模块作为光通信领域一个重要的配件&#xff0c;实现光电和电光的转换&#xff0c;和光纤连接&#xff0c;承载了数据流量的快速转换与传输。因而在整个网络体系中&#xff0c;起着至关重要的作用。虽然光模块在使用过程中&#xff0c;不像交换机和服务器等网络设备一样需要经…

MacOS14 Sonoma 安装 Flutter 开发环境

本文针对 小白用户也包括自己&#xff0c;以前都是将这些写入我的有道云笔记。为了让给多人看见或者说自己更好的浏览&#xff0c;先将其记录如下。 朋友介绍一个项目说要开发一款App&#xff0c;最近也是闲着就答应下来。主要功能是通过蓝牙BLE控制设备的一个 Iot边缘设备&…

echarts 自定义提示样式

在setOption中添加自定义样式 tooltip: {trigger: axis,formatter: (params)> {// console.log(params);var result if(params[0] && params[1]){result 发电量对比<div style"background:#F4F7FC;padding:5px;margin:5px 0px;border-radius:6px"&…