Optional的基础运用

news2024/9/20 7:10:43

Optional的基础运用

  • 简介
  • 代码示例

简介

在这里插入图片描述
在这里插入图片描述

代码示例

package org.example;


import org.junit.Test;

import java.util.Optional;


public class OptionalTest {

    @Test
    public void advance() {
        String str = "hello";
        str = null;
        // of(T t):封装数据t生成Optional对象,要求t非空,否则报空指针异常
        Optional<String> optional = Optional.of(str);
        String str1 = optional.get();
        System.out.println(str1);
    }

    @Test
    public void test2() {
        String str = "hello";
        // empty():创建的Optional对象内部的value = null
        Optional<Object> op1 = Optional.empty();
        if (!op1.isPresent()) {
            // Optional封装的数据是否包含数据
            System.out.println("数据为空");
        }
        System.out.println(op1); // Optional.empty
        System.out.println(op1.isPresent()); // false
        // 如果Optional封装的数据value为空,则get()报NoSuchElementException,否则,value不为空时,返回value
        System.out.println(op1.get()); // 值为null,报NoSuchElementException
    }

    @Test
    public void test3() {
        String str = "beijing";
        str = null;
        // ofNullable(T t):封装数据t赋给Optional内部的value。不要求t非空
        Optional<String> optional = Optional.ofNullable(str);
        // orElse(T t1):如果Optional内部的value非空,则返回此value值
        // 如果value为空,则返回t1;
        String str2 = optional.orElse("12121");
        System.out.println(optional.get());
    }
}

如果确定值不为空,使用Optional.of和Optional.get,否则就使用Optional.ofNullable

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

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

相关文章

贝叶斯推理问题、MCMC和变分推理

一、介绍 贝叶斯推理是统计学中的一个主要问题&#xff0c;在许多机器学习方法中也会遇到。例如&#xff0c;用于分类的高斯混合模型或用于主题建模的潜在狄利克雷分配都是在拟合数据时需要解决此类问题的图形模型。 同时&#xff0c;可以注意到&#xff0c;贝叶斯推理问题有时…

2018年9月全国计算机等级考试真题(C语言二级)

2018年9月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 若有以下程序 main() { int a6, b0, c0; for(;a;) { ba; a-c; } printf("%d,%d,%d\n",a,b,c); } 则程序的输出结果是 A. 1,14,3 B. 0,18,3 C. …

【C语言】指针的进阶

目录 一、字符指针 二、指针数组 三、数组指针 1.数组指针的定义 2.&数组名和数组名区别 3.数组指针的使用 四、数组参数与指针参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 五、函数指针 六、函数指针数组 七、指向函数指针数组的指针…

【Matter】设备入网流程

官方信息 认证、配网过程 https://developers.home.google.com/matter/primer/commissioning Commissioning 是一个动作&#xff0c;待入网设备Commissionee 加入到Commissioner 过程 1.第一步&#xff0c;设备发现&#xff0c;比如通过ble 蓝牙方式 2.第二步&#xff0c;建…

科技资讯|苹果Vision Pro新专利曝光:可调节液态透镜

苹果公司近日申请了名为“带液态镜头的电子设备”&#xff0c;概述了未来可能的头显设计。头显设备中的透镜采用可调节的液态透镜&#xff0c;每个透镜可以具有填充有液体的透镜腔&#xff0c;透镜室可以具有形成光学透镜表面的刚性和 / 或柔性壁。 包括苹果自家的 Vision Pr…

嵌入式入门教学——C51(中)

嵌入式入门教学汇总&#xff1a; 嵌入式入门教学——C51&#xff08;上&#xff09;嵌入式入门教学——C51&#xff08;中&#xff09;嵌入式入门教学——C51&#xff08;下&#xff09; 目录 七、矩阵键盘 八、定时器和中断 九、串口通信 十、LED点阵屏 十一、DS1302实…

谷歌云 | 最大限度地提高可靠性降低成本:调整 Kubernetes 工作负载的大小

【Cloud Ace 是谷歌云全球战略合作伙伴&#xff0c;拥有 300 多名工程师&#xff0c;也是谷歌最高级别合作伙伴&#xff0c;多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商&#xff0c;我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训服务。】 您知道通过调整…

计蒜客T1266——出勤记录

水题&#xff0c;唯一考验操作水平的只有同级连续字符串最大值这一操作&#xff0c;解决方式如下&#xff1a; int late-1; //连续缺勤的次数 int max0;//最长连续的L //缺勤检验 for(int k0;k<temp.size()-1;k){if(temp[k]L&&late-1){late1;//当前是连续的第一个…

国产之光:讯飞星火最新大模型V2.0

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

Java实现CAS的原理

文章目录 1、 什么是CAS2、CAS的原理3、CAS的应用场景4、Java中的CAS实现5、使用AtomicInteger实现线程安全的计数器6、CAS实现原子操作的三大问题6.1、ABA问题6.2、循环时间长6.3、只能保证一个共享变量的原子性 7、总结 1、 什么是CAS CAS&#xff08;Compare and Swap&…

【GeoDa实用技巧100例】017:制作平行坐标图

文章目录 一、平行坐标图介绍二、平行坐标图制作1. 加载数据2. 平行坐标图三、平行坐标图链接一、平行坐标图介绍 在一般坐标系中,3D是可视化探索不同点相关性的极限。为了探索高维空间(大于3维)的可视化问题,1885年法国数学家奥克南提出了平行坐标的解决方案。 平行坐标图…

跑步用什么耳机听歌才不会掉,精选的几款跑步掉的运动耳机

跑步是一项受欢迎的运动&#xff0c;而好的音乐能够让跑步变得更加有趣。但是&#xff0c;很多人在跑步过程中都会遇到耳机脱落的问题&#xff0c;这不仅会打扰运动的节奏&#xff0c;也会让人感到非常恼火。因此&#xff0c;选择一款适合跑步的耳机非常重要。在本文中&#xf…

220、仿真-基于51单片机ULN2003A步进电机正反转加减速LCD12864显示Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 ​编辑 四、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方…

开发环境搭建

Anaconda安装搭建Python环境 官网下载Anaconda anaconda官网安装Anaconda设置系统环境变量 按照实际安装路径新建填写红框环境变量 验证环境是否正常运行 WINR输入cmd conda --version python --version pip --version 显示版本信息即为正常 VSCODE Python ShiftCtrlP顶部…

信号

信号也是IPC中的一种&#xff0c;是和管道&#xff0c;消息队列&#xff0c;共享内存并列的概念。 本文参考&#xff1a; Linux中的信号_linux中信号_wolf鬼刀的博客-CSDN博客 Linux系统编程&#xff08;信号处理 sigacation函数和sigqueue函数 )_花落已飘的博客-CSDN博客 Linu…

【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPushConsumer的实现原理及源码分析

RocketMQ开源是使用文件作为持久化工具&#xff0c;阿里内部未开源的性能会更高&#xff0c;使用oceanBase作为持久化工具。 在RocketMQ1.x和2.x使用zookeeper管理集群&#xff0c;3.x开始使用nameserver代替zk&#xff0c;更轻量级&#xff0c;此外RocketMQ的客户端拥有两种的…

【快应用】图片放大预览功能的实现

【关键词】 放大、image、background-position 【问题背景】 快应用中并没有直接的放大图片预览的功能&#xff0c;然而是可以利用现有的功能去实现图片的放大预览功能的。这样在快应用中浏览页面内容遇到图片时&#xff0c;遇到一些小图&#xff0c;觉得图片内容是不错的&am…

基于Three.js的WebXR渲染入门

1、Three.js 渲染管线快速概览 我不会花太多时间讨论 Three.JS 渲染管道的工作原理,因为它在互联网上有详细记录(例如,此链接)。 我将在下图中列出基础知识,以便更容易理解各个部分的去向。 2、WebXR 设备 API 入门 在我们深入了解 WebXR API 本身之前,您应该知道 WebX…

Linux如何改变文件的权限

Linux如何改变文件的权限 权限介绍权限更改关键字chmod通过数字修改通过字母修改 权限介绍 文件类型和文件权限由10个字符组成 文件的类型&#xff1a;- 表示文件&#xff0c; d 表示文件夹文件权限&#xff1a;r 表示读权限&#xff0c;w 表示写权限&#xff0c;x 表示执行权…

vue浏览器插件安装-各种问题

方法1&#xff1a;vue.js devtolls插件下载 https://blog.csdn.net/qq_55640378/article/details/131553642 下载地址&#xff1a; Tags vuejs/devtools GitHub npm install 或是 cnpm install 遇到的报错 设置淘宝镜像源&#xff08;推荐使用nrm&#xff0c;这一步是为…