Optional类

news2024/11/15 17:52:23

一、概述

泛型类、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.coloradmin.cn/o/1717476.html

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

相关文章

2024年艺术鉴赏与科学教育国际会议(ICAASE 2024)

2024年艺术鉴赏与科学教育国际会议 2024 International Conference on Art Appreciation and Science Education 【1】会议简介 2024年艺术鉴赏与科学教育国际会议是一场集艺术、科学和教育于一体的国际性学术盛会。本次会议旨在推动艺术鉴赏与科学教育领域的深入交流与合作&am…

通过 CXCR4 靶向纳米线修补细胞表面以抑制癌症转移

引用信息 文 章&#xff1a;Cell surface patching via CXCR4-targeted nanothreads for cancer metastasis inhibition. 期 刊&#xff1a;Nature Communications&#xff08;影响因子&#xff1a;16.6&#xff09; 发表时间&#xff1a;2024/3/29 作 者&#xff1…

语义分割——数据增广

前言 在进行语义分割的时候&#xff0c;我们的数据集有时候不够用&#xff0c;常常需要进行数据增广。 比较常用的数据增广方法(包括旋转&#xff0c;上下翻转&#xff0c;左右翻转&#xff0c;裁剪&#xff0c;调整对比度&#xff0c;调整饱和度&#xff0c;调整亮度&#xf…

【文献阅读】应用人工智能在Simulink中开发软件

参考文献&#xff1a;《AI用于Simulink模型的降阶方法和应用场景》Mathworks在2024年MATLAB XEPO大会的演讲 文章目录&#xff1a; 1、模型框架 2、数据准备 3、AI建模 4、仿真和测试 5、部署应用 Tips&#xff1a;降阶模型&#xff08;Reduced Order Modeling&#xff0…

Centos 7 安装刻录至硬件服务器

前言 在日常测试中&#xff0c;会遇到很多安装的场景&#xff0c;今天给大家讲一下centos 7 的安装&#xff0c;希望对大家有所帮助。 一.下载镜像 地址如下&#xff1a; centos官方镜像下载地址https://www.centos.org/download/ 按照需求依次点击下载 二.镜像刻录 镜像刻…

Redis学习笔记【基础篇】

SQL vs NOSQL SQL&#xff08;Structured Query Language&#xff09;和NoSQL&#xff08;Not Only SQL&#xff09;是两种不同的数据库处理方式&#xff0c;它们在多个维度上有所差异&#xff0c;主要区别包括&#xff1a; 数据结构: SQL&#xff08;关系型数据库&#xff09;…

修改element-ui el-radio颜色

修改element-ui el-radio颜色 需求效果图代码实现 小结 需求 撤销扣分是绿色&#xff0c;驳回是红色 效果图 代码实现 dom <el-table-columnlabel"操作"width"200px"><template v-slot"scope"><el-radio-group v-model"s…

基础—SQL—DQL(数据查询语言)分页查询

一、引言 上一篇博客学习了排序查询&#xff0c;这次来讲查询的最后一个部分&#xff1a;分页查询。 涉及到的关键字是&#xff1a;LIMIT 。 二、DQL—分页查询 对于分页&#xff0c;不管以后做的是传统的管理系统还是做互联网的项目&#xff0c;基本上都会遇到分页查询的操…

入门flask:Python后端开发的首选框架

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;从零开始学习弗拉斯克 二、弗拉斯克的微框架哲学 三、弗拉斯克的核心…

vs code便利手册

vs code终端改造 改造颜色 未改造前&#xff1a; 改造后&#xff1a; 改造方法&#xff1a;VS Code 终端美化成自己喜欢的样子_vs code 终端样式-CSDN博客

如何备份RDK X3(旭日X3派)的 SD卡镜像

该方法可以在Ubuntu的开发机上生成一个img镜像&#xff0c;后续可以直接使用rufus软件烧录备份好的镜像。 Step 1&#xff1a;在Ubuntu的开发机上安装gparted软件 如果安装失败则需要为您的Ubuntu开发机换源&#xff0c;这里推荐阿里源&#xff1a;https://developer.aliyun.…

Linux网络编程:应用层协议|HTTPS

目录 1.预备知识 1.1.加密和解密 1.2.常见加密方式 1.2.1.对称加密 1.2.2.非对称加密 ​编辑 1.3.数据摘要&#xff08;数据指纹&#xff09;和数据签名 1.4.证书 1.4.1.CA认证 1.4.2.证书和数字签名 2.HTTPS协议 2.1.自行设计HTTPS加密方案 2.1.1.只使用对称加密 …

【python深度学习】——大型工程项目管理以及互相导入

【python深度学习】——大型工程项目管理以及互相导入 1. 工程项目中常见的文件组织形式2. python中的“包”、“模块”、与__init__.py2.1 概念理解2.2 \__init__py的使用3. 包的导入——相对导入与绝对导入3.1 相对导入3.1.1 相对导入的语法3.1.2 相对导入的使用注意事项与常…

jupyter notebook anaconda环境下查看|加载|更换内核

文章目录 1 问题复现2 查看内核位置3 调整python解释器位置 1 问题复现 在conda虚拟环境中使用pip安装相应package&#xff0c; 但是在jupyter notebook中加载该package时报错 [ERROR]ModuleNotFoundError: No module named shap 此时&#xff0c;除去包安装出现问题以外&am…

【国产化适配】国产化设备安装银河麒麟服务器V10填坑之路

银河麒麟官网申请试用&#xff0c;下载链接 AMD64/海光版/兆芯版 共享文件下载 - Kylin Distrohttps://distro-images.kylinos.cn:8802/web_pungi/download/share/vYTMm38Pkaq0KRGzg9pBsWf2c16FUwJL/ 飞腾版/鲲鹏版/ARM64 共享文件下载 - Kylin Distrohttps://distro-image…

运算符重载(下)

目录 前置和后置重载前置的实现Date& Date::operator()代码 后置的实现Date Date::operator(int )代码 前置--和后置--重载前置--的实现Date& Date::operator--( )代码 后置--的实现Date Date::operator--(int )代码 流插入运算符重载流插入运算符重载的实现流提取运算…

完蛋,AI一不小心把手机影像颠覆了

文&#xff5c;刘俊宏 2024上半年的发售季&#xff0c;手机影像大战再起。 近年来&#xff0c;影像年年卷&#xff0c;年年挤牙膏&#xff0c;直到AI大模型来临。 刚推出的荣耀跟法国百年摄影工作室雅顾合作&#xff0c;主打手机上拍出2万一张人像照片的高级感。华为nou在Pu…

【Python】 如何从列表中移除第一个元素?

基本原理 在Python中&#xff0c;列表是一种非常灵活的数据结构&#xff0c;可以存储一系列的元素。这些元素可以是任何类型&#xff0c;包括数字、字符串、其他列表等。列表中的元素是有序的&#xff0c;并且可以通过索引来访问和修改。 当我们想要从列表中移除第一个元素时…

【C++】哈希(2万字)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 unordered系列关联式容器 unordered_map unordered_map的文档介绍 unordered_map的接口说明 unordered_set 底层结构 哈希概念 哈希冲突 哈希函数 哈希…

Linux CFS调度器之周期性调度器scheduler_tick函数

文章目录 前言一、简介二、源码分析2.1 scheduler_tick2.2 task_tick2.3 entity_tick2.4 check_preempt_tick2.5 resched_curr 参考资料 前言 Linux内核调度器主要是主调度器和周期性调度器&#xff0c;主调度器请参考&#xff1a;Linux 进程调度之schdule主调度器 一、简介 …