Optional类

一、概述

泛型类、java8引进的、java.util包里

二、作用

解决空指针异常带来的不便

三、做法

将对象封装为一个Optional对象,如果封装的对象为空(即该对象不存在),可以使用默认值和或者执行默认操作

四、方法

1、empty() 创建空的Optional对象,对象里面不包含任何值(包括null),不会抛出NullPointerException异常

Optional<String>optional=Optional.empty();

使用Optional变量时,可以使用empty()创建一个空Optional对象对变量作初始化

2、of(T value)创建一个包含指定值的Optional对象

String s=null;
Optional.of(s);

传入非null值不报错,传入null值运行时会抛出NullPointerException异常

3、ofNullable(T value)创建包含指定值的Optional对象,指定值可以是非null值,也可以是null值,值为null是会返回一个空Optional对象(不包含任何值)

String s="abc";
Optional<String>optional=Optional.ofNullable(s);
String s1=null;
Optional<String>optional1=Optional.ofNullable(s1);

4、isPresent()用于判断Optional对象中是否存在非null值,存在返回true,不存在返回false

public static void main(String[] args) {String s="abc";Optional<String>optional=Optional.ofNullable(s);String s1=null;Optional<String>optional1=Optional.ofNullable(s1);if(optional.isPresent()){System.out.println("存在");}else{System.out.println("不存在");}if(optional1.isPresent()){System.out.println("存在");}else{System.out.println("不存在");}}

5、isEmpty()用于判断Optional对象是否为空,为空返回true,不为空返回false

此方法是jdk11中新增的方法

6、get()用来获取包装在Optional对象中的值,Optional对象不能为空,否则在运行时会抛出NoSuchElementException异常

public static void main(String[] args) {String s="abc";Optional<String>optional=Optional.ofNullable(s);String s1=null;Optional<String>optional1=Optional.ofNullable(s1);System.out.println(optional1.get());
}

7、orElse(T other)用于在Optional对象不包含非null值时提供默认值

情况1

public static void main(String[] args) {String s=null;Optional<String>optional=Optional.ofNullable(s);if(!optional.isPresent()){String defaultStr=optional.orElse("cde");System.out.println("optional的默认值是"+defaultStr);}
}

情况2

public static void main(String[] args) {String s=null;Optional<String>optional=Optional.ofNullable(s);if(!optional.isPresent()){String defaultStr=optional.orElse(null);System.out.println("optional的默认值是"+defaultStr);}
}

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

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

相关文章

【Qt知识】Qt Creator快捷键

以下是Qt Creator中的一些常用快捷键列表&#xff08;持续更新&#xff09;&#xff1a; 基本编辑 多行注释/取消多行注释: Ctrl /编译工程: Ctrl B运行工程: Ctrl R整行上移/下移: Ctrl Shift ↑/↓查找: Ctrl F函数声明和定义切换: F2向下查找: F3头文件和源文件切换:…

【postgresql初级使用】初识触发器,在数据行发生变化时自动执行用户行为,也可以SQL级别触发,特别是视图上可以有触发器了

初识触发器 ​专栏内容&#xff1a; postgresql使用入门基础手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 文章目录 初识触发器概…

【成品设计】基于RT-thread星火开发板的智能监测系统设计

《基于RT-thread星火开发板的智能监测系统设计》 所需器件&#xff1a; 主控&#xff1a;STM32F407星火开发板。温湿度传感器&#xff1a;采集当前环境中的温湿度。环境传感器&#xff1a;采集当前环境中的光照强度。CO2传感器&#xff0c;采集当前环境中的C02浓度。粉尘传感…

excel怎么对非数字求和汇总?

如&#xff1a;学生小王的成绩为&#xff1a;A&#xff0c;A&#xff0c;A&#xff0c;A&#xff0c;B&#xff0c;B-……想得到的成绩汇总求和为&#xff1a;2A,2A,1B,1B- 如果在低版本里&#xff0c;用公式计算可能相当复杂&#xff0c;但是有了TEXTJOIN函数和UNIQUE函数&…

校园交友|基于SprinBoot+vue的校园交友网站(源码+数据库+文档)

校园交友网站 目录 基于SprinBootvue的校园交友网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…

AKG K450配什么前端:深度解析与最佳搭配指南

AKG K450配什么前端&#xff1a;深度解析与最佳搭配指南 在音频世界里&#xff0c;选择一款合适的前端设备对于耳机音质的发挥至关重要。AKG K450作为一款备受好评的耳机&#xff0c;其音质细腻、低频饱满&#xff0c;但要想真正发挥其潜力&#xff0c;就需要找到一款与之相匹…

CSS学习笔记:bootstrap的介绍、下载、使用及响应式布局的实现

介绍 Bootstrap 是由 Twitter 公司开发维护的前端 UI 框架&#xff0c;它提供了大量编写好的CSS 样式 bootstrap过时了吗&#xff1f; 其实在学bootstrap这一部分的网课时&#xff0c;在弹幕上看到一些同学说bootstrap已经过时了&#xff0c;这里谈谈我的看法 我的前端学习…

3天13部,端午档电影数何以是五一档2倍?

离端午还有12天&#xff0c;院线端午档再上热搜。 截止至5月29日&#xff0c;本次端午档将有13部电影在3天的节假日内集中上映&#xff0c;这一数量仅比2021年端午档的最高纪录少了2部&#xff0c;几乎是今年五一档期上映影片数量&#xff08;7部&#xff09;的两倍。 并且与…

使用OpenCV创建全景图像

使用OpenCV创建全景图像 前言图像拼接策略创建全景图像相关链接前言 在本节中,我们将学习组合多个图像来创建全景图像。使用相机拍摄全景照片时,通常会拍摄多张照片,通过算法将这些图像中共同存在的元素(从左到右)映射到一张单独的图像中。为了执行图像的拼接,将利用 cv2 …

UE5 Http Server

前言 最近要用UE 作为一个服务器去接收来自外部的请求&#xff0c;从而在UE中处理一些内容&#xff0c;但是之前只做过请求&#xff0c;哪整过这玩意&#xff0c;短期内还得出结果&#xff0c;那怎么搞嘞&#xff0c;本着省事的原则就找找呗&#xff0c;有没有现成的&#xff0…

计算机网络- 特定服务类型(Type of Service, TOS) 服务质量(Quality of Service, QoS)

特定服务类型&#xff08;Type of Service, TOS&#xff09; 具有特定服务类型&#xff08;Type of Service, TOS&#xff09;的数据包是指在IP头部中包含特定TOS字段设置的数据包。TOS字段用于指示数据包的服务质量要求&#xff0c;如延迟、吞吐量、可靠性等。现代IP网络通常…

结构体中内存的对齐

前言 学C的同学应该知道~ 想精通C语言就不得不面对—指针与内存 续上次指针进阶&#xff0c;这一章我来聊一聊C语言内存对齐的问题 学习结构体的你有没有注意过结构体向系统申请的内存为多少呢的&#x1f601; 思考 #include<stdio.h> typedef struct s1 {char a;char …

Qt6同时使用Qt3DCore与QtGUI时QTransform类冲突问题

在Qt GUI模块有一个QTransform类&#xff0c;在Qt3D Core模块也有一个QTransform类&#xff0c;如果不特殊指定一下会报错

全新/二手KEITHLEY 2400 数字万用表

吉时利Keithley 2400数字源表&#xff0c;200V&#xff0c;1A&#xff0c;20W Keithley 2400 源表是一款 20W 仪器&#xff0c;可输出和测量 5V&#xff08;输出&#xff09;和 1V&#xff08;测量&#xff09;至 200V DC 的电压以及 10pA 至 1A 的电流。该万用表功能包括高重复…

【linux深入剖析】进程间通信

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1.进程间通信目的2. 什么…

layui实现鼠标移入/移出时显示/隐藏tips

layui实现鼠标移入/移出时显示/隐藏tips弹窗 注&#xff1a;其它弹窗亦可按照此方法实现相同效果 鼠标移入 dom 或 tips 区域&#xff0c;显示 tips 弹窗&#xff1b; 鼠标移出 dom 或 tips 区域&#xff0c;隐藏 tips 窗口&#xff1b; <div id"box">鼠标移入…

如何发布自己的 npm 包

创建 npm 包项目 创建项目目录&#xff1a; 在本地创建一个新的项目目录&#xff0c;并进入该目录。 初始化项目&#xff1a; 在命令行中运行以下命令初始化 npm 项目&#xff1a; npm init 按照提示填写项目信息&#xff0c;包括包名、版本、描述等。 编写代码 在项目目录…

react 怎样向ant table添加按钮,以及文本溢出隐藏?

这些都是一些组件自带的方法&#xff0c;只不过是不知道该怎么用&#xff0c;上面的内容可以直接拿去用&#xff0c;&#xff08;事件除外&#xff0c;要自己绑&#xff0c;还有引入的组件&#xff09;&#xff01;

Go常见的语法题目

1、下面代码能运行吗&#xff1f;为什么。 type Param map[string]interface{}type Show struct {Param }func main1() {s : new(Show)s.Param["RMB"] 10000 }解析 共发现两个问题&#xff1a; main 函数不能加数字。new 关键字无法初始化 Show 结构体中的 Param…

数据结构:栈和队列的练习题1(括号匹配问题)

题目描述&#xff1a; 思路&#xff1a;我们首先可以把出现的情况大致分为以下几类&#xff1a; 因为涉及匹配问题&#xff0c;所以所有的左括号和右括号肯定要分开来整理。如果我们直接去匹配的话&#xff08;像第一行的从左到右独立匹配&#xff09;是行得通的&#xff0c;但…